Pagini recente » Cod sursa (job #2496410) | Cod sursa (job #619363) | Cod sursa (job #2424584) | Cod sursa (job #2842310) | Cod sursa (job #30975)
Cod sursa(job #30975)
using namespace std;
#include<stdio.h>
int main(){
FILE*f=fopen("buline.in","r");
FILE*g=fopen("buline.out","w");
long i, suma, ga, t, nr, n, v[2][200000],sume[20000],w[20000], l[20000], m, pc, lung;
fscanf(f,"%ld",&n);
for (i=0;i<n;i++)
fscanf(f,"%ld%ld",&v[0][i],&v[1][i]);
if (n==1)
fprintf(g,"%ld 1 1",v[0][0]);
else {
nr=0;
ga=1;
t=0;
suma=0;
pc=0;
lung=0;
while ((ga==0)||(nr<n)){
if (suma>=0){
ga=0;
if (v[1][nr%n]==1) {suma+=v[0][nr%n]; sume[t]=suma; w[t]=pc; lung++; l[t]=lung; t++;}
else {
suma-=v[0][nr%n];
sume[t]=suma;
lung++;
w[t]=pc;
l[t]=lung;
t++;
if ((lung>=n)||(suma<0))
ga=1;
}
nr++;
}
else{
ga=1;
suma=0;
lung=0;
pc=nr%n;
}
}
m=sume[0];
for (i=1;i<t;i++)
if (sume[i]>m) { ga=i; m=sume[i];}
if (m==0){
m=v[0][0];
for (i=0;i<n;i++)
if (v[0][i]>m) {m=v[0][i]; ga=i};
fprintf(g,"%ld %ld ",m,ga);
fprintf(g,"1\n");
}
else {
fprintf(g,"%ld %ld %ld",m,w[ga]+1,l[ga]);}
}
fclose(f);
fclose(g);
return 0;
}