Pagini recente » Cod sursa (job #24564) | Cod sursa (job #690143) | Cod sursa (job #206841) | Cod sursa (job #118928) | Cod sursa (job #3277331)
#include <bits/stdc++.h>
std::ifstream fin("buline.in");
std::ofstream fout("buline.out");
const int SIZE = 2e5 + 5;
int n;
bool restarted = false;
int s, smax, lgmax, lg, start, start_max;
int a[2 * SIZE];
int64_t max(std::vector<int64_t> v){ return *std::max_element(v.begin(), v.end()); }
int64_t min(std::vector<int64_t> v){ return *std::min_element(v.begin(), v.end()); }
int main()
{
fin >> n;
for(int i = 1; i <= n; ++i)
{
int x, y;
fin >> x >> y;
a[i] = x * (y ? 1 : -1);
}
smax = s = a[1];
lgmax = lg = 1;
start_max = start = 1;
for(int i = 1; i <= n; ++i)
a[n + i] = a[i];
for(int i = 2; i <= 2 * n; ++i)
{
if(lg > n)
s = a[i], lg = 1, start = i;
else if(s + a[i] >= a[i])
s += a[i], lg++;
else
s = a[i], lg = 1, start = i;
if(start > n)
start -= n;
if(s > smax || (s == smax && (start_max > start || (start_max == start && lg < lgmax))))
smax = s, lgmax = lg, start_max = start;
}
fout << smax << " " << start_max << " " << lgmax;
return 0;
}