Pagini recente » Cod sursa (job #1853550) | Cod sursa (job #2625466) | Cod sursa (job #3131483) | Cod sursa (job #3241431) | Cod sursa (job #283579)
Cod sursa(job #283579)
#include <stdio.h>
int A[1000001];
int min(int x,int y)
{
if (x<y) return x;
return y;
}
int main()
{
freopen("operatii.in","r",stdin);
freopen("operatii.out","w",stdout);
int n,i,p,steps=0,r=1,k,j;
scanf("%d",&n);
for (i=1;i<=n;i++) scanf("%d",&A[i]);
do
{
p=0;
for (i=r;i<=n;i++) if (A[i]>p) p = A[i];
if (p)
for (i=r;i<=n;i++)
if (A[i]==p) {
j = i;
while (A[j]==p) j++;
k = min(p-A[i-1],p-A[j]);
steps += k;
for (;i<j;i++) A[i]-=k;
}
while (A[n]==0) n--;
while (A[r]==0) r++;
} while (p);
printf("%d",steps);
}