Pagini recente » Cod sursa (job #3355326) | Cod sursa (job #3312398) | Cod sursa (job #2939003) | Cod sursa (job #3348335) | Cod sursa (job #3308764)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin ("buline.in");
ofstream fout ("buline.out");
int main () {
int n;
fin >> n;
vector<int> v;
for (int i = 0; i < n; ++i) {
int x, c;
fin >> x >> c;
if (c == 1)
v.push_back(x);
else
v.push_back(-x);
}
for (int i = 0; i < n - 1; ++i)
v.push_back(v[i]);
long long sum_max = -1e18, sum = 0, start, poz, lungime;
for (int i = 0; i < v.size(); ++i) {
if (sum + v[i] > v[i])
sum += v[i];
else {
sum = v[i];
start = i;
}
if (i - start + 1 <= n) {
if (sum > sum_max || (sum == sum_max && start % n < poz) || (sum == sum_max && start % n == poz && i - start + 1 < lungime)) {
sum_max = sum;
lungime = i - start + 1;
poz = start % n;
}
}
}
fout << sum_max << ' ' << poz + 1 << ' ' << lungime;
return 0;
}