Cod sursa(job #1038682)

Utilizator Athena99Anghel Anca Athena99 Data 21 noiembrie 2013 21:31:04
Problema Buline Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <fstream>

using namespace std;

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

const int inf= 1<<30;
const int nmax= 200000;

int v[nmax+1];

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

    int s1= 0, s2= 0, st1= 0, st2= 0, p1= 0, p2= 0, l1= 0, l2= 0, max= -inf, min= inf;
    for ( int i= 1; i<n; ++i ) {
        if ( s1<0 ) {
            s1= 0;
            st1= i;
        }
        if ( s2>0 ) {
            s2= 0;
            st2= i;
        }
        s1+= v[i], s2+= v[i];
        if ( s1>max ) {
            max= s1;
            p1= st1;
            l1= i-st1+1;
        }
        if ( s2<min ) {
            min= s2;
            p2= st2;
            l2= i-st2+1;
        }
    }

    if ( min+max<sum ) {
        fout<<sum-min<<" "<<p2+l2<<" "<<n-l2;
    } else {
        fout<<max<<" "<<p1<<" "<<l1;
    }
    fout<<"\n";

    return 0;
}