Cod sursa(job #1520718)

Utilizator NicolaalexandraNicola Alexandra Mihaela Nicolaalexandra Data 9 noiembrie 2015 11:46:15
Problema Buline Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.27 kb
#include <fstream>

using namespace std;

int n,i,v[200001],s,minim,p,u,x,y,pmaxim,umaxim,s2,ap,ap2,maxim;

ifstream fin ("buline.in");

ofstream fout ("buline.out");

int main (){

    fin>>n;

    for (i=1;i<=n;i++){
        fin>>x>>y;
        if (y == 0)
            v[i] = -x;

        else
            v[i] = x;
        s2+=v[i];
    }

    maxim = -2000000000;

    s = v[1];
    p = 1;
    maxim = v[1];
    pmaxim = 1;
    umaxim = 1;
    for (i=2;i<=n;i++){
        if (s + v[i] >= v[i]){
            s+=v[i];
        }
        else{
            s=v[i];
            p = i;
        }
        if (s > maxim) {
            maxim = s;
            pmaxim = p;
            umaxim = i;
        }
    }

    s = v[1];
    minim = v[1];
    p = 1;
    for (i=2;i<n;i++) {
        if (s + v[i] < v[i]) {
            s += v[i];
        } else {
            s = v[i];
            p = i;
        }
        if (s2 - s > maxim) {
            maxim = s2 - s;
            pmaxim = i+1;
            umaxim = p-1;
        } else
            if (s2 - s == maxim && pmaxim > i+1) {
                pmaxim = i+1;
                umaxim = p-1;
            }
    }

    fout<<maxim<<" "<<pmaxim<<" "<< n- (umaxim-pmaxim)*-1 + 1;

    return 0;
}