Cod sursa(job #1412214)

Utilizator borscalinCalin-Stefan Georgescu borscalin Data 1 aprilie 2015 10:30:49
Problema Buline Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <cstdio>

using namespace std;

int v[200000];

int main(){
	freopen("buline.in","r",stdin);
	freopen("buline.out","w",stdout);
	int n,i,sc,smax,st,stm,drm,a,stot,smin,drmm,stmm,smax2;
	scanf("%d",&n);
	stot=0;
	for (i=0;i<n;i++){
		scanf("%d%d",&v[i],&a);
	    if (a==0)
		 v[i]*=-1;
		stot+=v[i];
	}
	sc=smax=v[0];
	st=stm=drm=0;
	for (i=1;i<n;i++){
		  if (sc)
		    sc+=v[i];
	      else {
			sc=v[i];
			st=i;
	      }
	      if (sc>smax){
			 stm=st;
		     drm=i;
		     smax=sc;
	      }
	}
	drmm=drm;
	stmm=stm;
	smin=stot;
	sc=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<smin){
			 stm=st;
		     drm=i;
		     smin=sc;
	      }
	}
	smax2=stot-smin;
	if (smax>smax2)
		  printf("%d %d %d",smax,stmm,drmm-stmm+1);
	else {
	   if (stm-1==-1)
	     stm=n-1;
	   printf("%d %d %d",smax2,(drm+1)%n+1,n-(drm-stm+1));
	}
	return 0;
}