Pagini recente » Cod sursa (job #2299108) | Cod sursa (job #1812515) | Cod sursa (job #1201957) | Cod sursa (job #318767) | Cod sursa (job #72510)
Cod sursa(job #72510)
#include<stdio.h>
#include<stdlib.h>
#define val 400003
long n,inc,lung;
long max;
long a[val];
void citire()
{
freopen("buline.in","r",stdin);
scanf("%ld", &n);
int w;
for (long i=0; i<n; i++)
{
scanf("%ld%d", &a[i], &w);
if (w==0)
a[i]*=-1;
a[i+n]=a[i];
}
fclose(stdin);
}
void prelucrare()
{
long s=a[0],e;
long w=0,q;
max=-20000;
inc=0;
lung=1;
for (long i=1; i<2*n-1; i++)
{
e=i;
if (e>n)
e-=n;
if (i-w+1>n)
s-=a[w++];
q=w+1;
if (q>n)
q-=n;
if ((a[i]>s+a[i]) || (a[i]==s+a[i] && e<q))
{
s=a[i];
w=i;
}
else s+=a[i];
q=w+1;
if (q>n)
q-=n;
if (s>max && i-w+1<=n)
{
inc=q;
lung=i-w+1;
max=s;
}
else if (s==max && q<inc && i-w+1<=n)
{
inc=q;
lung=i-w+1;
}
else if (s==max && inc==q && lung>i-w+1 && i-w+1<=n)
lung=i-w+1;
}
}
void printare()
{
freopen("buline.out","w",stdout);
/* ++inc;
if (inc>n)
{
inc-=n;
}*/
printf("%ld %ld %ld",max,inc,lung);
fclose(stdout);
}
int main()
{
citire();
prelucrare();
printare();
return 0;
}