Pagini recente » Cod sursa (job #1132932) | Cod sursa (job #1231168) | Cod sursa (job #889325) | Cod sursa (job #1632603) | Cod sursa (job #2184332)
#include <fstream>
#define NM 250003
using namespace std;
ifstream f("cuburi2.in");
ofstream g("cuburi2.out");
int n,m,i,j,x,y,min1,poz,st,dr,mijl,p;
long long sum;
int s[NM],d[NM],a[NM],S[NM],D[NM];
int cautbin(int x, int y){
st=x; dr=y;
while(st<=dr){
mijl=(st+dr)/2;
if(s[mijl-1]-s[x-1]<s[y]-s[mijl-1]){
poz=mijl;
st=mijl+1;
} else dr=mijl-1;
}
return poz;
}
int main()
{
f>>n>>m;
for(i=1;i<=n;i++) { f>>a[i]; s[i]=s[i-1]+a[i]; S[i]=S[i-1]+s[i-1]; }
for(i=n;i>=1;i--) { d[i]=d[i+1]+a[i]; D[i]=D[i+1]+d[i+1]; }
for(i=1;i<=m;i++){
f>>x>>y;
p=cautbin(x,y);
sum=(S[p]-S[x-1]-s[x-1]*(p-x+1))*1LL;
sum+=(D[p]-D[y+1]-d[y+1]*(y-p+1))*1LL;
g<<p<<' '<<sum<<'\n';
sum=0;
}
return 0;
}