Cod sursa(job #2010937)

Utilizator shantih1Alex S Hill shantih1 Data 14 august 2017 19:10:55
Problema Oo Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.27 kb
#include <iostream>
#include <fstream>

using namespace std;
ifstream fin("oo.in");
ofstream fout("oo.out");

int n, i, mx, in, sum, a, b, c, sf, x, y, z, v[200005];
bool bn[200005];

int main () {
    
    fin >> n;
    mx = -300;
    for (i = 1; i <= n; i++)
    {
        fin >> v[i];
        v[i+n] = v[i];
        if (i >= 4 && v[i-1]+v[i-2]-v[i-3]-v[i] > mx)
        {
            mx = v[i-1]+v[i-2]-v[i-3]-v[i];
            in = i+1;
        }
    }
    
    sum = v[in-2]+v[in-3];
    sf = in-4+n;
    
    //cout << in << " " << sf << " " << n+in-5 << "\n";
    //for (i = in; i < sf-1; i++)
      //  cout << v[i] << " ";    cout << "\n";
    
    for (i = in; i < sf-1; i++)
    {
        // calculez a
        a = v[i]+v[i+1]-v[i+2];
        x = v[i]+v[i+1];
        if (i+2 >= sf)   a += v[i+2];
        
        // calculez b
        b = v[i+1]+v[i+2]-v[i]-v[i+3];
        y = v[i+1]+v[i+2];
        if (i+3 >= sf)   b += v[i+3];
        
        // calculez c
        c = v[i+2]+v[i+3]-v[i+1]-v[i+4];
        z = v[i+2]+v[i+3];
        if (i+4 >= sf)   c += v[i+4];
        
        // compar
        if (a > b && a > c)  {  i += 2; sum += x;  }
        if (b > a && b > c)  {  i += 3; sum += y;  }
        if (c > a && c > b)  {  i += 4; sum += z;  }
    }
    
    fout << sum << "\n";
}