Cod sursa(job #866875)

Utilizator stoicatheoFlirk Navok stoicatheo Data 28 ianuarie 2013 20:46:42
Problema Oo Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include<cstdio>
#include<cassert>
#define Nmax 100005
 
FILE *f=fopen("oo.in","r");
FILE *g=fopen("oo.out","w");
using namespace std;
 
int n,v[Nmax],Smax,Q[Nmax];
void read()
{
    fscanf(f,"%d",&n);
    int i;
    for(i=1;i<=n;i++)
        fscanf(f,"%d",&v[i]);
    v[n+1]=v[1];
}
int max(int i,int j)
{
    if(i>j)
        return i;
    else return j;
}
void solve(int left,int right)
{
    int i;
    Q[left]=0;
    Q[left+1]=v[left]+v[left+1];
     
    for(i=left+2;i<=right;i++)
        {
            Q[i]=max(Q[i-1],Q[i-3]+v[i-1]+v[i]);
           }
     
    Smax=max(Smax,Q[right]);
     
}
void write()
{
    fprintf(g,"%d",Smax);
}
int main()
{
    read();
    solve(1,n-1);
    solve(2,n);
    solve(3,n+1);
    write();
    return 0;
}