Cod sursa(job #166392)

Utilizator gabitzish1Gabriel Bitis gabitzish1 Data 27 martie 2008 22:30:07
Problema Buline Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include<stdio.h>
#include<limits.h>

long n, v[400002], max=INT_MIN, min=INT_MAX, sum, pix, pin, pi, pfx, pfn, pf;

void citire()
{
  freopen("buline.in","r",stdin);
  freopen("buline.out","w",stdout);
  scanf("%ld", &n);

  long i, j, s;

  for (i=1; i<=n; i++)
    {
      scanf ("%ld %ld",&v[i],&s);
      if (s==0) v[i]*=(-1);
	  v[i + n] = v[i];
    }

}

void suma()
{
  long sc, i, pi, pf;
  sc=v[1];
  pi=pf=1;
  max=sc;
  for (i=2; i<= 2 * n; i++)
    {
      if (sc<=0) { pf=i-1; pi=i; sc=v[i];}
	else sc+=v[i];
	if (i - pi + 1 > n) {i = pi + 1; sc = -1;}
	else  if (sc>max ) { max=sc; pix=pi; pfx=i;}
	  
    }
    
  printf("%ld %ld %ld",max, pix, pfx - pix + 1);
}

int main()
{
  citire();
  suma();
  return 0;
}