Pagini recente » Cod sursa (job #1361945) | Cod sursa (job #2060681) | Cod sursa (job #2964922) | Cod sursa (job #721602) | Cod sursa (job #35676)
Cod sursa(job #35676)
using namespace std;
#include<stdio.h>
#include<math.h>
#define max 200000
int main(){
FILE*f=fopen("buline.in","r");
FILE*g=fopen("buline.out","w");
long nr, ga, n, sm, t, lg, poz, i, m;
long v[2][max], pz[max], lung[max], sume[max];
fscanf(f,"%ld",&nr);
for (i=0;i<nr;i++)
fscanf(f,"%ld%ld",&v[0][i],&v[1][i]);
ga=1;
n=0;
sm=0;
t=0;
while (ga==0||n<nr){
if (ga==1){
sm=0;
poz=n%nr+1;
lg=1;
sm=sm+pow(-1,v[1][n%nr]+1)*v[0][n%nr];
if (sm<=0) ga=1;
else
if (lg>nr) ga=1;
else{
sume[t]=sm;
pz[t]=poz;
lung[t]=lg;
t++;
ga=0;
}
n++;
}
else {
lg++;
sm=sm+pow(-1,v[1][n%nr]+1)*v[0][n%nr];
if (sm<=0) ga=1;
else
if (lg>nr) ga=1;
else{
sume[t]=sm;
pz[t]=poz;
lung[t]=lg;
t++;
}
n++;
}
}
m=sume[0];
poz=0;
for (i=1;i<t;i++)
if (sume[i]>m) { m=sume[i]; poz=i;}
if (m==0) {
m=v[0][0];
poz=0;
for (i=1;i<nr;i++)
if (v[0][i]<m){ m=v[0][i]; poz=i;}
fprintf(g,"%ld %ld ",-m,poz);
fprintf(g,"1\n");
}
else
fprintf(g,"%ld %ld %ld\n",m, pz[poz], lung[poz]);
fclose(f);
fclose(g);
return 0;
}