Pagini recente » Cod sursa (job #779572) | tema | Cod sursa (job #2170104) | Cod sursa (job #975684) | Cod sursa (job #1092982)
#include <fstream>
#define inf 2000000001
using namespace std;
ifstream fin("buline.in");
ofstream fout("buline.out");
int a[200001],n,s,p1,p2,p,l1,l2,l,maxv,minv,currentmax,currentmin,wh;
int main()
{
fin>>n;
for (int i=1; i<=n; ++i)
{
fin>>a[i]>>wh;
if (!wh)
a[i] = -a[i];
s += a[i];
}
maxv = -inf;
p1 = 0; l1 = 0;
p = 0; l = 0;
currentmax=-inf;
for (int i=1; i<=n; ++i)
{
if (currentmax < 0)
{
currentmax = a[i];
p=i;
}
else
{
currentmax += a[i];
}
if (currentmax > maxv)
{
maxv = currentmax;
p1 = p;
l1 = i-p+1;
}
}
minv = inf;
p2 = 0; l2 = 0;
p = 0; l = 0;
currentmin = inf;
for (int i=1; i<=n; ++i)
{
if (currentmin >= 0)
{
currentmin = a[i];
p = i;
}
else currentmin += a[i];
if (currentmin < minv)
{
minv = currentmin;
p2 = i+1;
l2 = n-(i-p+1);
}
}
if (maxv > s - minv)
{
fout<<maxv<<" "<<p1<<" "<<l1;
}
else
{
fout<<s-minv<<" "<<p1<<" "<<l2;
}
}