Pagini recente » Cod sursa (job #167267) | Cod sursa (job #2744081) | Cod sursa (job #67193) | Cod sursa (job #932697) | Cod sursa (job #257287)
Cod sursa(job #257287)
#include<stdio.h>
#define N 400001
int n,i,p,u,S,P,L,co[N],a[N],s[N];
void readd(),solve(),enque(int ii),deque();
int main()
{
readd();
solve();
return 0;
}
void readd()
{
freopen("buline.in","r",stdin);
freopen("buline.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d%d",&a[i],&p);a[i]=(p)?a[i]:-a[i];
}
}
void solve()
{
p=1;
for(i=1;i<=n;i++){s[i]=s[i-1]+a[i];s[i+n]=s[i];}
for(i=1;i<=n;i++)s[i+n]+=s[n];
for(i=1;i<n;i++)enque(i);
for(i=1;i<=n;i++)
{
deque();
enque(i+n-1);
if(s[co[p]]-s[i-1]>S){S=s[co[p]]-s[i-1];L=co[p]-i+1;P=i;}
}
printf("%d %d %d",S,P,L);
}
void deque()
{
while(co[p]<i)p++;
}
void enque(int ii)
{
while(u>=p&&s[co[u]]<s[ii])u--;
u++;co[u]=ii;
}