AtCoder Grand Contest 005

Submission #1358492

Source codeソースコード

#include <bits/stdc++.h>
using namespace std;

#define ll long long
#define ff first
#define ss second
typedef pair<int,int> ii;


int main()
{
    int n;
    cin>>n;

    stack<ii> pile;

    ll t[n];
    ll minLeft[n];
    ll minRight[n];

    for(int i=0;i<n;i++)
    {
        cin>>t[i];
        minRight[i]=i;

        while(!pile.empty() && pile.top().ff>=t[i])
        {
            minRight[pile.top().ss]=i;
            pile.pop();
        }

        if(pile.empty())
            minLeft[i]=-1;
        else
            minLeft[i]=pile.top().ss;
        pile.push(ii(t[i],i));
    }

    while(!pile.empty())
    {
        minRight[pile.top().ss]=n;
        pile.pop();
    }
    ll answer=0;

    for(int i=0;i<n;i++)
    {
        ll nb= (minRight[i]-i)*(i-minLeft[i]);
        answer+=nb*t[i];
    }

    cout<<answer;

}

Submission

Task問題 B - Minimum Sum
User nameユーザ名 MohamedAmine
Created time投稿日時
Language言語 C++14 (GCC 5.4.1)
Status状態 AC
Score得点 400
Source lengthソースコード長 888 Byte
File nameファイル名
Exec time実行時間 64 ms
Memory usageメモリ使用量 6528 KB

Test case

Set

Set name Score得点 / Max score Cases
Sample - example0,example1,example2
All 400 / 400 corner0,corner1,corner2,corner3,example0,example1,example2,maxrand0,maxrand1,maxrand2,rand0,rand1,rand2

Test case

Case name Status状態 Exec time実行時間 Memory usageメモリ使用量
corner0 AC 64 ms 6528 KB
corner1 AC 62 ms 4992 KB
corner2 AC 1 ms 256 KB
corner3 AC 64 ms 5532 KB
example0 AC 1 ms 256 KB
example1 AC 1 ms 256 KB
example2 AC 1 ms 256 KB
maxrand0 AC 64 ms 4992 KB
maxrand1 AC 64 ms 4992 KB
maxrand2 AC 64 ms 4992 KB
rand0 AC 1 ms 256 KB
rand1 AC 1 ms 256 KB
rand2 AC 1 ms 256 KB