Cod sursa(job #1461838)

Utilizator aokirisakiLisca Ana aokirisaki Data 16 iulie 2015 15:39:52
Problema Buline Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <cstdio>
#include <cstdlib>
using namespace std;

int x[400001];

int main()
{freopen("buline.in","r",stdin);
freopen ("buline.out","w",stdout);
int n,i,sc,ic,smax,im,sfm,culoare,stot=0,smax2,sfmin,imin,smin;
scanf("%d",&n);

for(i=1;i<=n;i++)
    {scanf("%d%d",&x[i],&culoare);
     if(culoare==0)
      x[i]=-x[i];
      x[n+i]=x[i];
      }


sc=smax=x[1];
ic=im=sfm=1;

for(i=2;i<=n;i++)
{
    if(sc+x[i]<x[i])
    {
        sc=x[i];
        ic=i;
    }
    else sc=sc+x[i];
if(sc>smax)
{
    smax=sc;
    im=ic;
    sfm=i;
}

}
sc=smin=x[1];
ic=imin=sfmin=1;
for(i=2;i<=n;i++)
{
    if(sc+x[i]>x[i])
    {
        sc=x[i];
        ic=i;
    }
    else sc=sc+x[i];
if(sc<smin)
{
    smin=sc;
    imin=ic;
    sfmin=i;
}

}

for(i=1;i<=n;i++)
    stot=stot+x[i];

smax2=stot-smin;

if(smax>smax2)
    {printf("%d %d %d",smax,im,sfm-im+1);
    }
else {printf("%d %d %d",smax2,(sfmin+1)%n,n-(sfmin-imin+1));

    }

    return 0;
}