Cod sursa(job #2757155)

Utilizator Pavel_GeorgescuPavel Georgescu Pavel_Georgescu Data 4 iunie 2021 09:32:28
Problema Buline Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.26 kb

#include <fstream>

using namespace std;

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

const int N = 10000;
int v[N+5];

int main()
{
    int n, stot = 0;
    bool semn;
    fin >> n;
    for(int i = 1; i <= n; i++)
    {
        fin>>v[i]>>semn;
        if(semn==0)
            v[i]=-v[i];
            stot+=v[i];
    }
    int sc,scmin,scmax,ic,stmin,drmin,stmax,drmax;
    sc=scmax=v[1];
    ic=stmax=drmax=1;
    for(int i=2;i<=n;i++)
    {
        if(sc+v[i]<v[i])
        {
            sc=v[i];
            ic=i;
        }
        else
            sc+=v[i];
        if(sc>scmax)
        {
            scmax=sc;
            stmax=ic;
            drmax=i;
        }
    }

    ic=stmin=drmin=1;
    sc=scmin=v[1];
    for(int i =2;i<=n;i++)
    {
        if(sc+v[i]>=v[i])
        {
            sc=v[i];
            ic=i;
        }
        else
            sc+=v[i];
        if(sc<scmin)
        {
            scmin=sc;
            stmin=ic;
            drmin=i;
        }
    }
    int scirc=stot-scmin;
    if(scirc>scmax)
    {
        fout<<scirc<<" "<< drmin+1<<" "<<n-(drmin - stmin + 1)<<endl;
    }
    else
    {
        fout<<scmax<<" "<<stmax<<" "<<drmax-stmax+1<<endl;
    }
    return 0;
}