Pagini recente » Cod sursa (job #2727424) | Cod sursa (job #647550) | Profil mamaie | Profil mamaie | Cod sursa (job #1255914)
#include<fstream>
#include <iostream>
using namespace std;
ifstream f("cuburi2.in");
ofstream g("cuburi2.out");
int i,n,m,x,y,p,a[251001],dr[251001],st[251001],d[251001],s[251001];
int cautare(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;
}
int main()
{
f>>n>>m;
for(i=1;i<=n;++i)
{
f>>a[i];
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)
{
f>>x>>y;
p=cautare(x,y);
g<<p<<' '<<s[p]-s[x-1]-st[x-1]*(p-x+1)+d[p]-d[y+1]-dr[y+1]*(y-p+1)<<'\n';
}
return 0;
}