Pagini recente » Cod sursa (job #351881) | Cod sursa (job #456854) | Cod sursa (job #1932209) | Cod sursa (job #931209) | Cod sursa (job #41426)
Cod sursa(job #41426)
#include <cstdio>
const int NMAX = 1 << 18;
int N, S, mn, 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 == 0) A[i] = -A[i];
S += A[i];
}
fclose(fin);
}
void maxim_seq() {
int i, s, cs;
mn = st = l = 0;
for (cs = -1, s = i = 0; i < N; ++i) {
s += A[i];
// printf("%d\n", s);
if (s < mn || (s == mn && st == cs + 1))
mn = 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 - mn, (st + l) % N + 1, N - l);
fclose(fout);
}
int main() {
read();
maxim_seq();
write();
return 0;
}