Cod sursa(job #239484)

Utilizator raica_cristiraica dumitru cristian raica_cristi Data 4 ianuarie 2009 21:13:17
Problema Operatii Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.63 kb
#include<stdio.h>


int main ()
{
    freopen ("operatii.in","r",stdin);
    freopen ("operatii.out","w",stdout);
    int n,i,k;
    scanf("%d",&n);
    long a[n],b[n],min=100000000,max=0,x=0,o,l;
    for(i=1;i<=n;i++)
    {
                     scanf("%d",&a[i]);
                     if(a[i]<min)
                     min=a[i];
                     if(a[i]>max)
                     max=a[i];
                     b[i]=a[i];
                    }
            b[0]=a[0]=max;
            b[n+1]=a[n+1]=max;     
                     int exista=1,e2=1;
                     while(exista)
                    {//min=max;
                    e2=1;
                    // printf("%d  %d\n",min,max);
                                  exista=0;
                                  for(i=1;i<=n;i++)
                                  {if(a[i]!=max)
                                  {exista=1;
                                                if(b[i]==min)
                                                {k=i;
                                                 e2=0;
                                                             while(a[k]==min)
                                                             k++;
                                                         if(a[k]>a[i-1])
                                                           { x+=a[i-1]-a[i];
                                                            for(o=i;o<k;o++)
                                                             b[o]=a[i-1];
                                                             }
                                                             else
                                                           {
                                                                  x+=a[k]-a[i];
                                                                    for(o=i;o<k;o++)
                                                             b[o]=a[k];
                                                             }
                                            i=k;
                                            }
                                  }}
                                  
                                  for(i=1;i<=n;i++)
                                  a[i]=b[i];
                                  if(e2==1)
                               {   min=a[1];
                                  for(i=1;i<=n;i++)
                                  if(min>a[i])
                                  min=a[i];}
                                  }
                                  printf("%d\n",x);
                     return 0;
                     }