Pagini recente » Cod sursa (job #2627740) | Cod sursa (job #1129512) | Cod sursa (job #1857766) | Cod sursa (job #828640) | Cod sursa (job #35580)
Cod sursa(job #35580)
using namespace std;
#include<stdio.h>
#include<math.h>
int main(){
FILE*f=fopen("buline.in","r");
FILE*g=fopen("buline.out","w");
long nr, v[2][20000], ga, n, sm, t, lg, poz, pz[20000], lung[20000], i, sume[20000], m;
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;
}