Cod sursa(job #2284904)

Utilizator emiliancsEmilian Stavarache emiliancs Data 17 noiembrie 2018 18:55:46
Problema Cuburi2 Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.67 kb
#include<cstdio>
int v[250005];
long long st[250005],dr[250005],sum1[250005],sum2[250005];
int main(){
freopen("cuburi2.in","r",stdin);
freopen("cuburi2.out","w",stdout);
int n,m,i,j,x,y,cx,cy,mij,last;
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++){
scanf("%d",&v[i]);
st[i]=st[i-1]+v[i];
sum1[i]=sum1[i-1]+st[i-1];}
for(i=n;i>=1;i--)
dr[i]=dr[i+1]+v[i],sum2[i]=sum2[i+1]+dr[i+1];
for(i=1;i<=m;i++){
scanf("%d%d",&x,&y);
cx=x;
cy=y;
last=x;
while(x<=y){
mij=(x+y)/2;
if (st[mij-1]-st[cx-1]<st[cy]-st[mij-1]){
last=mij;
x=mij+1;}
else
y=mij-1;}
printf("%d %lld\n",last,sum1[last]-sum1[cx-1]-st[cx-1]*(last-cx+1)+sum2[last]-sum2[cy+1]-dr[cy+1]*(cy-last+1));}
return 0;}