Pagini recente » Cod sursa (job #97630) | Cod sursa (job #814806) | Cod sursa (job #2137738) | Cod sursa (job #2856511) | Cod sursa (job #330258)
Cod sursa(job #330258)
# include <stdio.h>
const long int MAXN=1000000;
long int stiva[MAXN+1],v[MAXN+1];
long int stlen,n,sol;
void citire()
{
FILE *f=fopen("operatii.in","r");
fscanf(f,"%ld",&n);
long int i;
for (i=1;i<=n;i++)
fscanf(f,"%ld",&v[i]);
fclose(f);
}
void scrie()
{
FILE *g=fopen("operatii.out","w");
fprintf(g,"%ld\n",sol);
fclose(g);
}
void push(long int val)
{
stiva[++stlen]=val;
}
int empty() {return stlen==0;}
long int top() {return stiva[stlen];};
void pop(int nivn)
{
long int nivc=top();
stlen--;
if (empty() || top()<nivn) sol+=nivc-nivn;
else sol+=nivc-top();
}
void calculeaza()
{
long int i;
for (i=1;i<=n;i++)
{
while (v[i]<top()) pop(v[i]);
if (v[i]>top()) push(v[i]);
}
while (!empty()) pop(0);
}
int main()
{
citire();
calculeaza();
scrie();
return 0;
}