Pagini recente » Cod sursa (job #227988) | Cod sursa (job #1134269) | Cod sursa (job #205909) | Cod sursa (job #2979856) | Cod sursa (job #1640014)
#include <fstream>
#define INF 1000000000
#define MAXN 200001
using namespace std;
ifstream fin("buline.in");
ofstream fout("buline.out");
int suma,sumaMax,x,posMin,lung,lungMin,n,i,v[MAXN],val,st;
int main()
{
fin>>n;
suma = -INF;
lungMin = -INF;
sumaMax = -INF;
posMin = INF;
for (i=1;i<=n;i++)
{
fin>>val>>x;
if (x == 0)
v[i] = -val;
else
v[i] = val;
}
for (int j=1;j<=2;j++)
for (i=1;i<=n;i++)
{
if (suma < 0)
{
suma = v[i];
st = i;
}
else
{
suma += v[i];
}
if (i >= st && j == 1)
lung = i - st + 1;
else
lung = i + n - st + 1;
if (suma > sumaMax && lung <= n)
{
sumaMax = suma;
posMin = st;
lungMin = lung;
}
else if (suma == sumaMax)
{
if (st < posMin)
{
posMin = st;
lungMin = lung;
}
else if (st == posMin)
{
if (lung < lungMin)
lungMin = lung;
}
}
}
fout<<sumaMax<<" "<<posMin<<" "<<lungMin;
return 0;
}