Pagini recente » Cod sursa (job #628812) | Cod sursa (job #2323892) | Cod sursa (job #802692) | Cod sursa (job #3222983) | Cod sursa (job #2517849)
#include <fstream>
using namespace std;
ifstream cin("cuburi2.in");
ofstream cout("cuburi2.out");
#define N 250005
int v2[N],st[N],dr[N],sst[N],sdr[N];
int main()
{
int n,m,mm,i,s=0,mini,a,x,y,rez,xx,yy;
cin>>n>>mm;
for(i=1;i<=n;i++)
{
cin>>v2[i];
a=v2[i];
//v[i]=v[i-1]+s;
st[i]=st[i-1]+s;
s+=a;
sst[i]=s;
}
s=0;
for(i=n;i>0;i--)
{
dr[i]=dr[i+1]+s;
//v[i]+=dr[i];
s+=v2[i];
sdr[i]=s;
}
st[n+1]=st[n];
for(i=1;i<=mm;i++)
{
cin>>x>>y;
xx=x;
yy=y;
mini=-1;
rez=-1;
while(x<=y)
{
m=(x+y)/2;
if(sst[m-1]-sst[xx-1]<sst[yy]-sst[m-1])
{
x=m+1;
rez=m;
}
else
y=m-1;
}
if(rez==-1)
rez=m;
cout<<rez<<" "<<(long long)st[rez]-st[xx]-sst[xx-1]*(rez-xx)+dr[rez]-dr[yy]-sdr[yy+1]*(yy-rez)<<'\n';
}
return 0;
}