Pagini recente » Cod sursa (job #841719) | Cod sursa (job #3299712) | Cod sursa (job #2862599) | Cod sursa (job #759292) | Cod sursa (job #3308739)
#include <fstream>
using namespace std;
ifstream cin("buline.in");
ofstream cout("buline.out");
int v[400001];
struct sumitizare {
int val = 0;
int p = 0;
int l = 0;
};
sumitizare s;
int main() {
int n, i, p = 0, l = 0, c;
int s_max = -2000000000; // foarte mic
cin >> n;
for (i = 1; i <= n; i++) {
cin >> v[i] >> c;
if (c == 0) v[i] = -v[i];
}
for (i = n + 1; i <= 2 * n - 1; i++) {
v[i] = v[i - n];
}
s.p = 1;
for (i = 1; i <= 2 * n - 1; i++) {
if (s.val + v[i] >= v[i] && s.l < n) {
s.val += v[i];
s.l++;
if (s.l == 1) s.p = i;
if (s.val > s_max) {
s_max = s.val;
p = s.p;
l = s.l;
}
} else if (s.val + v[i] < v[i] || s.l == n) {
s.val = v[i];
s.p = i;
s.l = 1;
if (s.val > s_max) {
s_max = s.val;
p = s.p;
l = s.l;
}
}
}
if (p > n) p -= n;
cout << s_max << " " << p << " " << l;
return 0;
}