Cod sursa(job #2473964)

Utilizator andreibazavanAndrei Bazavan andreibazavan Data 14 octombrie 2019 15:58:09
Problema Buline Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("buline.in");
ofstream fout("buline.out");
int n,i,x,sol,l,p,sum,st,dr,S,v[100001];
int main()
{
    fin>>n;
    sol=-1000001;
    p=-1;
    l=1;
    for(i=1;i<=n;i++)
    {
        fin>>v[i]>>x;
        if(x==0)v[i]=-v[i];
        v[i+n]=v[i];
        S+=v[i];
    }
    st=1;
    dr=1;
    p=st;
    l=1;
    for(i=2;i<=n;i++)
    {
        if(v[i]>sum+v[i])st=i,dr=i,sum=v[i];
        else sum+=v[i],dr++;

        if(sol<sum)sol=sum,p=st,l=dr-st+1;
        else if(sol==sum && p>st)p=st,l=dr-st+1;
    }
    for(i=2;i<=n;i++)
    {
        if(v[i]<sum+v[i])st=i,dr=i,sum=v[i];
        else sum+=v[i],dr++;

        if(sol<S-sum)sol=S-sum,p=dr+1,l=n-dr+st-1;
        else if(sol==S-sum)p=dr+1,l=n-dr+st-1;
    }
    if(p>n)
        p-=n;
    fout<<sol<<" "<<p<<" "<<l;
    return 0;
}