Cod sursa(job #1461680)

Utilizator Iulia_ivanaIulia Ivana Iulia_ivana Data 16 iulie 2015 11:20:47
Problema Buline Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include<fstream>
using namespace std;

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

int x[400001];

int main(){
    int n,sc,ic,im,sfm,smax;
    in>>n;
    for(int i=1; i<=n; i++){
        in>>x[i];
        int k;
        in>>k;
        if(k==0) x[i]*=-1;
    }

    for(int i=n+1; i<=((2*n)-1); i++)
        x[i]=x[i-n];

    sc=smax=x[1];
    ic=im=sfm=1;
    for(int i=2; i<=2*n-1; i++){
        if(i<=n){
            if(sc+x[i]<x[i]){
                sc=x[i];
                ic=i;
            }
            else {
                sc+=x[i];
            }

            if(sc>smax){
                smax=sc;
                im=ic;
                sfm=i;
            }
        }
        else{
            if(i-n<ic){
                if(sc+x[i]>=x[i]){
                    sc+=x[i];
                }
                else i=2*n;

                if(sc>smax){
                    smax=sc;
                    im=ic;
                    sfm=i;
                }
            }
        }
    }

    out<<smax<<" "<<im<<" "<<sfm-im+1;
    in.close();
    out.close();
    return 0;
}