Pagini recente » Cod sursa (job #2072298) | Cod sursa (job #2268043) | Statistici Mircea Cozarev (looney) | Istoria paginii runda/onisim/clasament | Cod sursa (job #389740)
Cod sursa(job #389740)
#include<fstream>
using namespace std;
int n, a[100001], c[100001], maxim;
void ReadData()
{
int i;
ifstream fin("oo.in");
fin>>n;
for(i=0; i<n; i++)
fin>>a[i];
fin.close();
}
int Maxim2(int x, int y)
{
if(x>y)
return x;
return y;
}
void Solve()
{
int i, k;
c[0] = 0;
c[1] = a[0]+a[1];
c[2] = c[1];
c[3] = c[1];
for(i=4; i<n-1; i++)
{
k = a[i]+a[i-1]+c[i-3];
c[i] = Maxim2(k, c[i-1]);
}
maxim = c[n-2];
c[0] = 0;
c[1] = 0;
c[2] = a[2]+a[1];
c[3] = c[2];
c[4] = c[3];
for(i=5; i<n; i++)
{
k = a[i]+a[i-1]+c[i-3];
c[i] = Maxim2(k, c[n-1]);
}
maxim = Maxim2(maxim, c[n-2]);
c[n-1] = 0;
c[0] = a[0]+a[n-1];
c[1] = c[0];
c[2] = c[1];
for(i=3; i<n-3; i++)
{
k = a[i]+a[i-1]+c[i-3];
c[i] = Maxim2(k, c[i-1]);
}
maxim = Maxim2(maxim, c[n-2]);
}
int main()
{
ReadData();
if(n==2) maxim = a[0]+a[1];
else
if(n==3)
{
maxim = Maxim2(a[0]+a[1],a[1]+a[2]);
maxim = Maxim2(maxim, a[0]+a[2]);
}
else Solve();
ofstream fout("oo.out");
fout<<maxim<<"\n";
return 0;
}