Pagini recente » Cod sursa (job #515623) | Cod sursa (job #2918240) | Cod sursa (job #3330305) | Cod sursa (job #788775) | Cod sursa (job #3309299)
#include <fstream>
using namespace std;
ifstream cin("operatii.in");
ofstream cout("operatii.out");
int A[1000001];
long long s=0;
long long nrOp(int st, int dr)
{
if(st<=dr)
{
int nmin=1e6;
for(int i=st;i<=dr;i++)
{
if(nmin>A[i]) nmin=A[i];
// cout<<A[i]<<" ";
}
//cout<<endl;
for(int i=st;i<=dr;i++) A[i]-=nmin;
// for(int i=st;i<=dr;i++) cout<<A[i]<< " ";
// cout<<endl;
long long s=nmin,l=0;
for(int i=st;i<=dr;i++)
if(A[i]!=0)
l++;
else
s+=nrOp(i-l,i-1), l=0;
if(l>0)
s+=nrOp(dr-l+1,dr);
return s;
}
return 0;
}
int main()
{
int n;
cin>>n;
int l=0;
for(int i=1;i<=n;i++)
{
cin>>A[i];
}
/*for(int i=1;i<=n;i++)
{
cout<<A[i]<<" ";
}*/
//cout<<endl;
for(int i=1;i<=n;i++)
if(A[i]==0)
s=s+nrOp(i-l,i-1),l=0;
else l++;
s=s+nrOp(n-l+1,n);
cout<<s;
return 0;
}