Pagini recente » Cod sursa (job #2062011) | Cod sursa (job #2739547) | Cod sursa (job #3246304) | Cod sursa (job #1426902) | Cod sursa (job #41324)
Cod sursa(job #41324)
#include <cstdio>
const int NMAX = 1 << 17;
int N, S, mx, st, l;
int A[NMAX];
void read() {
FILE *fin = fopen("buline.in", "rt");
int i, t;
fscanf(fin, " %d", &N);
for (i = 0; i < N; ++i) {
fscanf(fin, " %d %d", A + i, &t);
if (t == 1) A[i] = -A[i];
S -= A[i];
}
fclose(fin);
}
void maxim_seq() {
int i, s, cs;
mx = A[0]; st = 0; l = 1;
for (cs = -1, s = i = 0; i < N; ++i) {
s += A[i];
if (s > mx)
mx = s, st = cs + 1, l = i - cs;
if (s < 0) s = 0, cs = i;
}
}
void write() {
FILE *fout = fopen("buline.out", "wt");
fprintf(fout, "%d %d %d\n", S + mx, (st + l) % N + 1, N - l);
fclose(fout);
}
int main() {
read();
maxim_seq();
write();
return 0;
}