Cod sursa(job #2421904)

Utilizator Alex.PAlexandru Pacurar Alex.P Data 16 mai 2019 17:11:00
Problema Oo Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.32 kb
#include <stdio.h>
#include <stdlib.h>
#define Nmax 100001

using namespace std;

int v[Nmax];
int d1[Nmax];
int d2[Nmax];

int max(int a, int b, int c){
    if(b>a)
        a=b;
    if(c>a)
        a=c;
    return a;
}

/// a o o o - |X X|

int main()
{
    FILE *fin, *fout;
    fin=fopen("oo.in","r");
    fout=fopen("oo.out","w");
    int n,i;
    fscanf(fin,"%d",&n);
    fscanf(fin,"%d",&v[1]);
    fscanf(fin,"%d",&v[2]);
    d1[2]=v[1]+v[2];
    for(i=3;i<5 && i<=n;i++){
        fscanf(fin,"%d",&v[i]);
        d1[i]=d2[i]=v[i]+v[i-1];
    }
    if(i<=n){
        fscanf(fin,"%d",&v[i]);
        d1[i] = v[i]+v[i-1] + max( d1[i-3], d1[i-4], d1[i-5] );
        d2[i] = v[i]+v[i-1];
        i++;
        for(i;i<n-1;i++){
            fscanf(fin,"%d",&v[i]);
            d1[i]= v[i]+v[i-1] + max( d1[i-3], d1[i-4], d1[i-5] );
            d2[i]= v[i]+v[i-1] + max( d2[i-3], d2[i-4], d2[i-5] );
        }
        if(i<=n){
            fscanf(fin,"%d",&v[i]);
            d2[i] = v[i]+v[i-1] + max( d2[i-3], d2[i-4], d2[i-5] );
        }
    }
    int sol1, sol2;
    sol1 = sol2 = 0;
    sol1 = max( d1[n-1], d1[n-2], d1[n-3] );
    sol2 = max( d2[n-1], d2[n-2], d2[n-3] );
    sol1 = max( sol1, sol2, 0 );
    fprintf(fout,"%d",sol1);
    fclose(fin);
    fclose(fout);
    return 0;
}