Pagini recente » Cod sursa (job #142673) | Cod sursa (job #542500) | Cod sursa (job #947130) | Cod sursa (job #2544633) | Cod sursa (job #41435)
Cod sursa(job #41435)
// Strange problem
#include <cstdio>
const int NMAX = 1 << 18;
int N, S[NMAX], T[NMAX], L[NMAX];
void read() {
FILE *fin = fopen("buline.in", "rt");
int i, v, t;
fscanf(fin, " %d", &N);
for (i = 1; i <= N; ++i) {
fscanf(fin, " %d %d", &v, &t);
if (t == 0) v = -v;
S[i] = S[i - 1] + v;
if (T[i - 1] > S[i])
T[i] = T[i - 1], L[i] = L[i - 1];
else
T[i] = S[i], L[i] = i;
}
fclose(fin);
}
void write() {
FILE *fout = fopen("buline.out", "wt");
int i, mx = 0, st = 0, l = 0;
for (i = 1; i <= N; ++i) {
if (mx < T[i - 1] + (S[N] - S[i - 1]))
mx = T[i - 1] + (S[N] - S[i - 1]),
st = i, l = N - i + 1 + L[i];
}
fprintf(fout, "%d %d %d\n", mx, st, l);
fclose(fout);
}
int main() {
read();
write();
return 0;
}