Cod sursa(job #1985180)

Utilizator dragos231456Neghina Dragos dragos231456 Data 27 mai 2017 01:24:14
Problema Buline Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.2 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("buline.in");
ofstream g("buline.out");
int n,v[200005],bestlen1,bestpos1,bestsum1,semn,nr;
int bestlen2,bestpos2,bestsum2=2000000000,stot,a,i1,s,i;
int main()
{
    f>>n;
    for(i=1;i<=n;++i)
    {
        f>>nr>>semn;
        if(semn==0) nr=-nr;
        v[i]=nr;
        stot+=nr;
    }
    for(int i=1;i<=n;++i) //subsecventa de suma maxima liniara
    {
        a=v[i];
        if(s<=0)
        {
            s=a;
            i1=i;
        }
        else s+=a;
        if(s>bestsum1)
        {
            bestsum1=s;
            bestpos1=i1;
            bestlen1=i-i1+1;
        }
    }
    s=0;
    for(int i=1;i<=n;++i) //ss minima pentru ss maxim ciclic
    {
        a=v[i];
        if(s>0)
        {
            s=a;
            i1=i;
        }
        else s+=a;
        if(s<bestsum2)
        {
            bestsum2=s;
            bestpos2=i1;
            bestlen2=i-i1+1;
        }
    }
    if(bestsum1>=stot-bestsum2)
    {
        g<<bestsum1<<' '<<bestpos1<<' '<<bestlen1;
    }
    else
    {
        g<<stot-bestsum2<<' '<<bestpos2+bestlen2<<' '<<n-bestlen2;
    }
    return 0;
}