Cod sursa(job #2118323)

Utilizator MihneaGhiraMihnea MihneaGhira Data 30 ianuarie 2018 14:54:41
Problema Buline Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.5 kb
#include<fstream>
using namespace std;
ifstream fin("buline.in");
ofstream fout("buline.out");
int n,i,x,s,maxim,L,pmax,lmax,S,minim,pmin,lmin;
int v[400005];
int main(){
    fin>>n;
    maxim=-200000000;
    minim=2000000000;
    for(i=1;i<=n;i++){
        fin>>v[i]>>x;
        if(x==0)
            v[i]*=-1;
        S+=v[i];
    }
    s=0;
    for(i=1;i<=n;i++){
        if(v[i]<=s+v[i]){
            if(maxim<s){
                maxim=s;
                pmax=i-L;
                lmax=L;
            }
            s+=v[i];
            L++;
        }
        else{
            if(maxim<s){
                maxim=s;
                pmax=i-L;
                lmax=L;
            }
            s=v[i];
            L=1;
        }
    }
    if(maxim<s){
        maxim=s;
        pmax=i-L;
        lmax=L;
    }
    s=0;
    for(i=1;i<=n;i++){
        if(v[i]>=s+v[i]){
            if(minim>s+v[i]){
                minim=s+v[i];
                pmin=i-L;
                lmin=L;
            }
            s+=v[i];
            L++;
        }
        else{
            if(minim>s+v[i]){
                minim=s+v[i];
                pmin=i-L;
                lmin=L;
            }
            s=v[i];
            L=1;
        }
    }
    if(minim>s+v[i]){
        minim=s+v[i];
        pmin=i-L;
        lmin=L;
    }
    if(maxim>=S-minim)
        fout<<maxim<<" "<<pmax<<" "<<lmax;
    else{
        fout<<S-minim<<" "<<pmin+1<<" "<<n-lmin;
    }
    return 0;
}