Cod sursa(job #284581)

Utilizator DraStiKDragos Oprica DraStiK Data 21 martie 2009 20:14:03
Problema Buline Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <stdio.h>
#define DIM 200005
int s[DIM];
int n,min,mi,lg,max,mini,max2,minii;
void read ()
{
    int i,x,c;
    scanf("%d",&n);
	for (i=1; i<=n; ++i) 
    {
		scanf("%d%d",&x,&c);
		if (c==0) x=-x;
		s[i]=s[i-1]+x;
	}
}
void solve1 ()
{
    int i;
    for (i=1; i<=n; ++i) 
    {
		if (s[i]-min>max) 
        {
			max=s[i]-min;
			mi=mini+1;
			lg=i-mini;
		}
		if (s[i]<min) 
        {
			min=s[i];
			mini=i;
		}
	}
}
void solve2 ()
{
    int i;
	for (i=1; i<=n; ++i) 
    {
		if (max2+s[n]-s[i-1]>max) 
        {
			max=max2+s[n]-s[i-1];
			mi=i;
			lg=minii+n-i+1;
		}
		else if (max2+s[n]-s[i-1]==max)
			lg=minii+n-i+1;
		if (s[i]>max2) 
        {
			max2=s[i];
			minii=i;
		}
	}
}
int main() 
{
    freopen("buline.in","r",stdin); 
    freopen("buline.out","w",stdout);
    read ();
    solve1 ();
    solve2 ();
	printf("%d %d %d\n",max,mi,lg);
	return 0;
}