Cod sursa(job #1412225)

Utilizator raisacmtAxenie Raisa raisacmt Data 1 aprilie 2015 10:35:44
Problema Buline Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.21 kb
#include <cstdio>

using namespace std;
int v[200005];
bool c[200005];
int main()
{
    freopen("buline.in","r",stdin);
    freopen("buline.out","w",stdout);
    int n,i,stot=0,smin,sc,smax,st,drm,stm,dr,l,smax1,stmin,drmin;
    scanf("%d",&n);
    for(i=0; i<n; i++){
        scanf("%d",&v[i]);
        scanf("%d",&c[i]);
        if(c[i]==0)
            v[i]*=(-1);
        stot+=v[i];
    }
          sc=smax1=v[0];
   st=stm=drm=0;
   for(i=1; i<n; i++)
   {
       if(sc+v[i]>v[i])
            sc+=v[i];
       else
       {
           sc=v[i];
           st=i;
       }
       if(sc>smax1)
       {
           stm=st;
           drm=i;
           smax1=sc;
       }
   }
   sc=smin=v[0];
   st=stmin=drmin=0;
   for(i=1; i<n; i++)
   {
       if(sc+v[i]<v[i])
            sc+=v[i];
       else
       {
           sc=v[i];
           st=i;
       }
       if(sc<smin)
       {
           stmin=st;
           drmin=i;
           smin=sc;
       }
   }

       smax=stot-smin;
       dr=(stmin-1)%n;
       st=(drmin+1)%n;
       l=(dr+n-st)%n+1;
    if(smax1>smax)
        printf("%d 1 %d",smax1,drm-stm+1);
    else
        printf("%d %d %d",smax,st+1,l);
    return 0;
}