Pagini recente » Cod sursa (job #2882776) | Cod sursa (job #931519) | Cod sursa (job #2050759) | Cod sursa (job #2929024) | Cod sursa (job #2473985)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("buline.in");
ofstream fout("buline.out");
int v[400005];
int n,a,b,startmax,lgmax,startmin,lgmin,start1,start2,lg1,lg2;
long long smax,smin,sum,smaxx,sminn;
bool ok;
int main()
{
fin >> n;
smin = 10000000;
for (int i=1;i<=n;i++)
{
fin >> a >> b;
if (b == 0)
v[i] = -a;
else v[i] = a;
sum += v[i];
}
start1 = start2 = 1;
for (int i=1;i<=n;i++)
{
smax += v[i];
smin += v[i];
lg1 ++;
lg2 ++;
if (smax < 0) {smax = 0;lg1=0;
if (i == n) start1 = 0;
else start1=i+1;
}
if (smin > 0) {smin = 0;lg2=0;
if (i == n) start2 = 0;
else start2=i+1;
}
if (smax > smaxx) {
smaxx = smax;
startmax = start1;
lgmax = lg1;
}
if (smin < sminn)
{
sminn = smin;
startmin = start2;
lgmin = lg2;
}
}
sminn = sum - sminn;
if (sminn > smaxx) ok = 1;
else ok = 0;
if (ok)
{
fout << sminn << " " << startmin+1 << " " << n-lgmin << '\n';
}
else{
if (startmin+1 == startmax) fout << smaxx << " " << startmax << " " << max(n-lgmin,lgmax);
else fout << smaxx << " " << startmax << " " << lgmax << '\n';
}
return 0;
}