Pagini recente » Cod sursa (job #613062) | Cod sursa (job #22742) | Cod sursa (job #2230851) | Cod sursa (job #1485340) | Cod sursa (job #290718)
Cod sursa(job #290718)
#include<fstream.h>
ifstream in("operatii.in");
ofstream out("operatii.out");
int n,v[1000000];
long long k;
int ok()
{ int i,p=0;
for(i=1;i<=n;i++)
if(v[i]!=0)p=1;
return p;
}
void scade(int p1,int p2)
{ int i;
for(i=p1;i<=p2;i++)
v[i]--;
k++;
}
void cauta()
{ int i,j,p1,p2;
for(i=1;i<n;i++)
{ if((i==1)&&(v[i]!=0))
{ p1=1;
for(j=p1;j<n;j++)
{ if((v[j]!=0)&&(v[j+1]==0))
{ p2=j;
scade(p1,p2);
return;
}
if((v[j+1]!=0)&&(j+1==n))
{ p2=j+1;
scade(p1,p2);
return;
}
}
}
if((i==n-1)&&(v[i+1]!=0))
{ scade(n,n);
return;
}
if((v[i]==0)&&(v[i+1]!=0))
{ p1=i+1;
for(j=p1;j<n;j++)
{ if((v[j]!=0)&&(v[j+1]==0))
{ p2=j;
scade(p1,p2);
return;
}
if((v[j+1]!=0)&&(j+1==n))
{ p2=j+1;
scade(p1,p2);
return;
}
}
}
}
}
int main()
{ int i,j;
in>>n;
for(i=1;i<=n;i++)
in>>v[i];
in.close();
while(ok()==1)
cauta();
out<<k<<"\n";
out.close();
return 0;
}