Pagini recente » Cod sursa (job #1364025) | Cod sursa (job #814938) | Cod sursa (job #668890) | Rating Ilisoi Daniel (danygh95) | Cod sursa (job #961772)
Cod sursa(job #961772)
#include<fstream>
#include<cstdio>
#define N 251000
#define D 1000000
using namespace std;
long long i,n,poz=D+1,m,x,y,p,a[N],dr[N],st[N],d[N],s[N];
char buf[D+10];
inline int bsearch(int li,int ls)
{
int mij,sol=li;
while(li<=ls)
{
mij=(li+ls)>>1;
if(st[mij-1]-st[x-1]<st[y]-st[mij-1])
{
li=mij+1;
sol=mij;
}
else
ls=mij-1;
}
return sol;
}
inline unsigned int ianr()
{
unsigned int nr=0;
while(buf[poz]<'0'||buf[poz]>'9')
if(++poz>=D)
fread(buf,D,1,stdin),poz=0;
while('0'<=buf[poz]&&buf[poz]<='9')
{
nr=nr*10+buf[poz]-'0';
if(++poz>=D)
fread(buf,D,1,stdin),poz=0;
}
return nr;
}
int main()
{
freopen("cuburi2.in","r",stdin);
freopen("cuburi2.out","w",stdout);
n=ianr();
m=ianr();
for(i=1;i<=n;++i)
{
a[i]=ianr();
st[i]=st[i-1]+a[i];
s[i]=s[i-1]+st[i-1];
}
for(i=n;i;--i)
{
dr[i]=dr[i+1]+a[i];
d[i]=d[i+1]+dr[i+1];
}
for(i=1;i<=m;++i)
{
x=ianr();
y=ianr();
p=bsearch(x,y);
printf("%lld %lld\n",p,s[p]-s[x-1]-st[x-1]*(p-x+1)+d[p]-d[y+1]-dr[y+1]*(y-p+1));
}
return 0;
}