Submission #6111

# Submission time Handle Problem Language Result Execution time Memory
6111 2014-06-19T20:51:55 Z kriii 즐거운 채소 기르기 (JOI14_growing) C++
0 / 100
8 ms 4756 KB
#include <stdio.h>
#include <stack>
using namespace std;

int N,D[300030],L[300030],R[300030];
stack<pair<int, int> > S; int lf;

int main()
{
	scanf ("%d",&N);
	for (int i=0;i<N;i++) scanf ("%d",&D[i]);
	for (int i=0;i<N;i++){
		int l=-1,c=0;
		while (!S.empty() && S.top().first < D[i]){
			l = S.top().first;
			c = S.top().second;
			lf -= c;
			S.pop();
		}
		L[i] = lf;
		if (l == D[i]) c++;
		else c = 1;
		S.push(make_pair(D[i],c));
		lf += c;
	}

	while (!S.empty()) S.pop(); lf = 0;
	for (int i=N-1;i>=0;i--){
		int l=-1,c=0;
		while (!S.empty() && S.top().first < D[i]){
			l = S.top().first;
			c = S.top().second;
			lf -= c;
			S.pop();
		}
		R[i] = lf;
		if (l == D[i]) c++;
		else c = 1;
		S.push(make_pair(D[i],c));
		lf += c;
	}

	long long ans = 0;
	for (int i=0;i<N;i++) ans += L[i] < R[i] ? L[i] : R[i];

	printf ("%lld\n",ans);

	return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 0 ms 4756 KB Output is correct
2 Correct 0 ms 4756 KB Output is correct
3 Incorrect 0 ms 4756 KB Output isn't correct
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 0 ms 4756 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 0 ms 4756 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 8 ms 4756 KB Output isn't correct
2 Halted 0 ms 0 KB -