Cod sursa(job #1461846)

Utilizator grimmerFlorescu Luca grimmer Data 16 iulie 2015 15:42:17
Problema Buline Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream  in("buline.in");
ofstream out("buline.out");
int v[200001];
int main()
{
    int ic,smax,im,sfm,i,smin,smax2,imin,sfmin,semn,sc,n,stot=0;
    in>>n;
    for(i=1;i<=n;i++){
        in>>v[i]>>semn;
        if(semn==0)
            v[i] = v[i]*(-1);
        stot+=v[i];
    }
    sc = smax = v[i];
    ic = im = sfm = 1;
    for(i=2;i<=n;i++){
        if(sc+v[i]<v[i]){
            ic = i;
            sc = v[i];
        }
        else
            sc +=v[i];
        if(sc > smax){
            smax = sc;
            im = ic;
            sfm = i;
        }
    }
    sc = smin = v[i];
    ic = imin = sfmin = 1;
    for(i=2;i<=n;i++){
        if(sc+v[i]>v[i]){
            ic = i;
            sc = v[i];
        }
        else
            sc+=v[i];
        if(sc<smin){
            smin = sc;
            imin = ic;
            sfmin = i;
        }
    }
    smax2 = stot - smin;
    if(smax>smax2)
        out<<smax<<" "<<im<<" "<<sfm-im+1;
    else
        out<<smax2<<" "<<(sfmin+1)%n<<" "<<n-(sfmin-imin+1);
    return 0;
}