Cod sursa(job #2079067)

Utilizator alex.carpCarp Alexandru alex.carp Data 30 noiembrie 2017 15:05:37
Problema Buline Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <fstream>

using namespace std;
ifstream f("buline.in");
ofstream g("buline.out");
int n,v[200005],x,i,s[400005],smax,imax,lmin,l;
struct
{
    int a,poz;
}t[400005];
int main()
{f>>n;
for(i=1;i<=n+n-1;i++)
{
    if(i<=n)
    {
    f>>v[i]>>x;
    if(x==0)v[i]=-v[i];
    s[i]=s[i-1]+v[i];
    }
    else
    {
        s[i]=s[i-1]+v[i-n];
    }
    t[i]=t[i-1];
    if(t[i].a<s[i] || t[i].poz==0){t[i].a=s[i];t[i].poz=i;}
}
smax=0;
for(i=1;i<=n+n-1;i++)
{
   if(smax<s[n]-s[i-1]+t[i-1].a){smax=s[n]-s[i-1]+t[i-1].a;imax=i;}
   if(smax==s[n]-s[i-1]+t[i-1].a && imax==i)
   {
       l=n-(i-t[i-1].poz)+1;
       if(l<lmin || lmin==0)lmin=l;
   }
}
g<<smax<<" "<<imax<<" "<<lmin;
    return 0;
}