Pagini recente » Cod sursa (job #2269534) | Cod sursa (job #953773) | Cod sursa (job #395559) | Cod sursa (job #1335078) | Cod sursa (job #775138)
Cod sursa(job #775138)
#include<stdio.h>
using namespace std;
#define MAXN 200002
int v[ 2 * MAXN ], best[ 2 * MAXN ];
int n, i, maxs, x, beg, length, t;
int main()
{
FILE *f = fopen("buline.in", "r");
fscanf(f, "%d", &n);
for(i = 1; i <= n; ++i)
{
fscanf(f, "%d %d", &v[i], &x);
if(!x)
v[i] = -v[i];
v[i + n] = v[i];
}
fclose(f);
t = 2 * n, x = 1;
for(i = 1; i <= t; ++i)
{
if(best[i-1] + v[i] > v[i] && i - x + 1 <= n)
best[i] = best[i-1] + v[i];
else
best[i] = v[i], x = i;
if(best[i] > maxs)
maxs = best[i], beg = x, length = i - beg + 1;
}
FILE *g = fopen("buline.out", "w");
fprintf(g, "%d %d %d\n", maxs, beg, length);
fclose(g);
return 0;
}