Cod sursa(job #2116670)

Utilizator maria15Maria Dinca maria15 Data 27 ianuarie 2018 20:37:24
Problema Buline Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <fstream>

using namespace std;

int n, i, maxim, suma, sol1, p, L;
int culoare, nr, s[400005], v[400005];

ifstream fin("buline.in");
ofstream fout("buline.out");

int main(){
    fin>>n;
    for(i=1;i<=n;i++){
        fin>>nr>>culoare;
        if(culoare == 0)
            s[i] = nr*(-1);
        else
            s[i] = nr;
        if(i!=n)
            s[i+n] = s[i];
    }
    maxim = suma = s[1];
    p = L = 1;
    for(i=2;i<2*n;i++){
        if(suma >= 0)
            suma += s[i];
        else
            suma = s[i], p = i;
        if(suma > maxim && i-p+1 <= n){
            maxim = suma;
            sol1 = p;
            L = i-p+1;
            if(sol1 > n)
                sol1-=n;
        }
    }

    for(i=1;i<2*n;i++)
        v[i] = s[2*n-i];
    suma = v[1];
    p = 1;
    for(i=2;i<2*n;i++){
        if(suma >= 0)
            suma += v[i];
        else
            suma = v[i], p = i;
        if(suma > maxim && i-p+1 <= n){
            maxim = suma;
            sol1 = p;
            L = i-p+1;
            if(sol1 > n)
                sol1-=n;
        }
    }
    fout<<maxim<<" "<<sol1<<" "<<L;
    return 0;
}