Cod sursa(job #1624946)

Utilizator miki4Dragomir Mihai miki4 Data 2 martie 2016 15:10:43
Problema Buline Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.14 kb
#include <fstream>
#include <cmath>
using namespace std;
//ifstream fin("sortare.in");
//ofstream fout("sortare.out");
ifstream fin("buline.in");
ofstream fout("buline.out");
int x, l, i, j, n, v[400005], pmax, umax, p1, p2, s2, pmin, umin, minim;
long long maxim, s, s1;
int main()
{
    fin>>n;
    for(i=1;i<=n;i++){
        fin>>x>>p1;
        if(p1==1)
            v[i]=x;
        else
            v[i]=-x;
        s+=v[i];
    }

    s1=v[1];maxim=s;pmax=1;umax=1;p1=1;
    s2=v[1];minim=s;pmin=1;umin=1;p2=1;
    for(i=2;i<=n;i++){
        if(v[i]+s1>=v[i]){
            s1+=v[i];
        }
        else
            s1=v[i], p1=i;
        if(s1>maxim){
            maxim=s1;
            umax=i;
            pmax=p1;
        }
        if(v[i]+s2<v[i]){
            s2+=v[i];
        }
        else
            s2=v[i], p2=i;
        if(s2<minim){
            minim=s2;
            umin=i;
            pmin=p2;
        }
    }
    if(s-minim<maxim)
    {
        fout<<maxim<<" "<<pmax<< " "<<umax-pmax+1;
    }
    else{
        fout<<s-minim<<" "<<umin+1<< " "<<n-umin+pmin-1;

    }

    return 0;
}