Pagini recente » Cod sursa (job #1356800) | Cod sursa (job #341507) | Cod sursa (job #1135646) | Cod sursa (job #1738614) | Cod sursa (job #2526579)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("oo.in");
ofstream g("oo.out");
int n, a[100001], maxi, p, nr;
bool viz[100001];
int maxim()
{
int m=0;
for(int i=1;i<=n;i++)
if(m<a[i] && viz[i]==0)
{
m=a[i];
p=i;
}
viz[p]=1;
return m;
}
bool gata()
{
for(int i=1;i<n;i++)
if(viz[i]==0 && viz[i+1]==0)
return 1;
return 0;
}
void viziteaza4(int l)
{
int cnt=4;
while(l<=n && cnt!=0)
{
viz[l]=1;
l++;
cnt--;
}
while(cnt!=0)
{
viz[cnt]=1;
cnt--;
}
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i];
while(gata())
{
maxi=maxim();
nr=nr+maxi;
if(viz[p]==0)
{
if(a[p-1]>a[p+1] && viz[p-1]==0)
{
nr=nr+a[p-1];
viziteaza4(p-2);
}
else if(viz[p+1]==0)
{
nr=nr+a[p+1];
viziteaza4(p-1);
}
}
}
cout<<nr;
return 0;
}