Pagini recente » Cod sursa (job #2167097) | Cod sursa (job #1337406) | Cod sursa (job #2839849) | Cod sursa (job #2181443) | Cod sursa (job #3277328)
#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[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 = 2; i <= n; ++i)
{
if(i == start && restarted)
break;
if(s + a[i] >= a[i])
s += a[i], lg++;
else
s = a[i], lg = 1, start = i;
if(s > smax || (s == smax && (start_max > start || (start_max == start && lg < lgmax))))
smax = s, lgmax = lg, start_max = start;
if(i == n && !restarted)
i = 0, restarted = true;
}
fout << smax << " " << start_max << " " << lgmax;
return 0;
}