Cod sursa(job #128864)

Utilizator DITzoneCAdrian Diaconu DITzoneC Data 28 ianuarie 2008 00:09:55
Problema Operatii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.49 kb
#include <stdio.h>
#include <assert.h>

#define nmax 1048576

int st[nmax],n,k;
long long sol;

int main()
{
	int i,x;
	assert(freopen("operatii.in","r",stdin));
	freopen("operatii.out","w",stdout);
	assert(scanf("%d",&n)==1);
	assert(n>=1);
	assert(n<=1000000);	
	st[0]=k=0;
	for(i=0;i<n;++i)
	{
		assert(scanf("%d",&x)==1);
		assert(x>=0);
		assert(x<=100000);
		if(st[k]<x)
			sol+=x-st[k],st[++k]=x;
		else
			for(st[k]=x;k&&st[k]>st[k-1];st[k-1]=st[k],k--);
	}
	printf("%lld\n",sol);
	return 0;
}