Cod sursa(job #330251)

Utilizator MarcvsHdrMihai Leonte MarcvsHdr Data 9 iulie 2009 11:56:10
Problema Operatii Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
# 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() 
     {
     long int nivc=top();
     stlen--;
     sol+=nivc-top();
     }

void calculeaza()
{
     long int i;
     for (i=1;i<=n;i++)
         if (v[i]>top()) push(v[i]);
         else if (v[i]<top()) pop();
     while (!empty()) pop();
}
         
int main()
{
    citire();
    calculeaza();
    scrie();
    return 0;
}