Pagini recente » Cod sursa (job #397236) | Cod sursa (job #2549915) | Cod sursa (job #2665837) | Cod sursa (job #447535) | Cod sursa (job #123001)
Cod sursa(job #123001)
#include <stdio.h>
FILE *f=fopen("operatii.in","r"), *g=fopen("operatii.out","w");
long v[1000002];
int main()
{
long op=0,k,t,tt,n,i,min,o,ss,s,max;
int p=1;
fscanf(f,"%ld",&n);
for (i=1;i<=n;i++)
fscanf(f,"%ld",&v[i]);
t=0;
tt=0;
while (p)
{
i=tt+1;
if (o) i=1;
t=0;
tt=0;
k=1;
o=0;
while ((k)&&(i<=n))
{
if ((v[i]>0)&&(!t)) {
t=i;
}
if ((v[i]==0)&&(t)) {
tt=i-1;
}
if ((t)&&(tt)) k=0;
i++;
}
if ((t)&&(i==n+1)&&(tt==0)) tt=n;
if (t>0)
{
min=v[t];
max=v[t];
for (i=t+1;i<=tt;i++)
{
if (v[i]<min) min=v[i];
if (v[i]>max) max=v[i];
}
if ((min==v[t])||(min==v[tt]))
{
for (i=t;i<=tt;i++)
v[i]=0;
op+=max;
}
else
{
for (i=t;i<=tt;i++)
v[i]-=min;
op+=min;
for (i=t;i<=tt;i++)
if ((v[i]>0)&&(v[i-1]==0)&&(v[i+1]==0))
{
op+=v[i];
v[i]=0;
}
else o=1;
}
}
if (t==0) p=0;
}
fprintf(g,"%ld\n",op);
return 0;
}