Cod sursa(job #2470804)

Utilizator Diana_IonitaIonita Diana Diana_Ionita Data 9 octombrie 2019 19:21:10
Problema Buline Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.58 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("buline.in");
ofstream fout("buline.out");
int n,i,b,a,poz,pozm,mini,ok,lm,l,v[400002];
long long smax,sum,best[400002];
int main()
{
    fin>>n;
    mini=-10000;
    for(i=1; i<=n; i++)
    {
        fin>>a>>b;
        if(b==0)
        {
            v[i]=-a;

        }
        else v[i]=a,ok=1;
        mini=max(v[i],mini);
        sum+=v[i];
    }
    if(ok)
    {
        smax=v[1];
        pozm=1;
        poz=1;
        l=1;
        for(i=1; i<=n; i++)
        {
            if(best[i-1]+v[i]>v[i])
            {
                best[i]=v[i];
                l=1;
                poz=i;
            }
            else
            {
                best[i]=v[i]+best[i-1];
                l++;
            }
            if(best[i]<smax)
            {
                smax=best[i];
                pozm=poz;
                lm=l;
            }
            else if(best[i]==smax)
            {
                if(poz>n)poz-=n;
                if(pozm>poz)
                {
                    pozm=poz;
                    lm=l;
                }
                else if(pozm==poz)
                {
                    lm=min(l,lm);
                }
            }
        }
        pozm+=l;
        if(pozm>n) pozm-=n;
        smax=sum-smax;
        fout<<smax<<" "<<pozm<<" "<<n-l;
    }
    else
    {
        for(i=1; i<=n; i++)
        {
            if(v[i]==mini)
            {
                fout<<mini<<" "<<i<<" "<<1;
            }
        }

    }
    return 0;
}