Pagini recente » Cod sursa (job #2811065) | Cod sursa (job #577755) | Cod sursa (job #2368298) | Cod sursa (job #709561) | Cod sursa (job #2930534)
#include <fstream>
using namespace std;
ifstream f("buline.in");
ofstream g("buline.out");
int main()
{
long long int st, dr, Smax = -2000000000, S = -1, start, n, semn, A[200001];
f >> n;
for(int i = 1 ; i <= n ; ++ i)
{
f >> A[i] >> semn;
if(!semn)
A[i]=(A[i]*-1);
if(S < 0)
{
S = 0;
start = i;
}
S += A[i];
if(S==Smax)
{
if(i-start < dr-st)
{
st=start;
dr=i;
}
}
if(S > Smax)
{
Smax = S;
st = start;
dr = i;
}
//g<<i<<" "<<A[i]<<" "<<S<<" "<<Smax<<'\n';
}
for(int i = 1; i < st; ++ i)
{
if(S < 0)
S = 0, start = i;
S += A[i];
if(S==Smax)
{
if(n-start+i < n-st+dr)
{
st=start;
dr=i;
}
}
if(S > Smax)
Smax = S, st = start, dr = i;
//g<<i<<" "<<A[i]<<" "<<S<<" "<<Smax<<'\n';
}
g << Smax << " ";
if(dr<st)
g << st << " " << (n-st+1)+dr;
else
g << st << " " << dr-st+1;
return 0;
}