Cod sursa(job #166390)

Utilizator gabitzish1Gabriel Bitis gabitzish1 Data 27 martie 2008 22:28:54
Problema Buline Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 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 (sc>max && i - pi + 1 <= n) { max=sc; pix=pi; pfx=i;}
	  else if (sc > max) {i = pi + 1; sc = -1;}
    }
    
  printf("%ld %ld %ld",max, pix, pfx - pix + 1);
}

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