Pagini recente » Cod sursa (job #779685) | Cod sursa (job #242113) | Cod sursa (job #64596) | Cod sursa (job #369663) | Cod sursa (job #25057)
Cod sursa(job #25057)
#include <stdio.h>
int v[400004];
int sum_m,sum_c,poz_i,in,sf,i,a,b,k,n;
void read_data()
{
scanf("%d",&n);
k=2*n;
for (i=1;i<=n;++i)
{
scanf("%d %d",&b,&a);
if (a==0) v[i]=b*-1; else v[i]=b;
v[n+i]=v[i];
}
}
void solve_eur()
{
sum_m=v[i];
sum_c=sum_m;
in=1;
sf=1;
poz_i=1;
for (i=2;i<=k;++i)
{
if ((sum_c<0) || (i-poz_i+1>n))
{
sum_c=v[i];
poz_i=i;
}
else sum_c+=v[i];
if (sum_c>sum_m)
{
sum_m=sum_c;
in=poz_i;
sf=i;
}
}
}
void print()
{
if (sf-in+1>n) sf=n;
if (in>n) in-=n; // Asta nu ar trebui sa se intample
printf("%d %d %d\n",sum_m,in,sf-in+1);
}
int main()
{
freopen("buline.in","r",stdin);
freopen("buline.out","w",stdout);
read_data();
solve_eur();
print();
return 0;
}