Pagini recente » Cod sursa (job #2207814) | Cod sursa (job #644986) | Cod sursa (job #1701526) | Cod sursa (job #163834) | Cod sursa (job #3224906)
#include <bits/stdc++.h>
using namespace std;
#define TITLE "buline"
#define ll long long
#define MaxN 100010
ifstream f (TITLE".in");
ofstream g (TITLE".out");
int solve()
{
int n;
ll dpmax;
ll semn;
f>>n;
f>>dpmax>>semn;
if(semn==0)
dpmax*=-1;
ll dpmin=dpmax;
ll maxim=dpmax;
ll minim=dpmin;
ll StartPozMax=1, StartPozMin=1, LengthMax=1, LengthMin=1, AnsLenMax=1, AnsLenMin=1, TotalSum=dpmax;
for(int i=2; i<=n; i++)
{
ll a;
f>>a>>semn;
if(semn==0)
a*=-1;
TotalSum+=a;
if(dpmax+a>=a)
{
dpmax+=a;
LengthMax++;
}
else
{
dpmax=a;
LengthMax=1;
}
if(dpmin+a<=a)
{
dpmin+=a;
LengthMin++;
}
else
{
dpmin=a;
LengthMin=1;
}
if(dpmax>maxim)
{
StartPozMax=i;
AnsLenMax=LengthMax;
maxim=dpmax;
}
if(dpmin<minim)
{
StartPozMin=i;
AnsLenMin=LengthMin;
minim=dpmin;
}
}
minim=TotalSum-minim;
if(maxim>minim || minim==0)
{
g<<maxim<<' '<<StartPozMax<<' '<<AnsLenMax;
return 0;
}
if(minim>maxim)
{
ll help=StartPozMin+AnsLenMin;
if(help==n+1)
help=1;
g<<minim<<' '<<help<<' '<<n-AnsLenMin;
return 0;
}
ll help=StartPozMin+AnsLenMin;
if(help==n+1)
help=1;
if(StartPozMax<help)
{
g<<maxim<<' '<<StartPozMax<<' '<<AnsLenMax;
return 0;
}
if(help<StartPozMax)
{
g<<minim<<' '<<help<<' '<<n-AnsLenMin;
return 0;
}
if(AnsLenMax<n-AnsLenMin)
{
g<<maxim<<' '<<StartPozMax<<' '<<AnsLenMax;
return 0;
}
g<<minim<<' '<<help<<' '<<n-AnsLenMin;
return 0;
return 0;
}
int main()
{
solve();
return 0;
}