提交时间:2023-08-26 11:50:38

运行 ID: 100454

#include <bits/stdc++.h> using namespace std; inline int read(){ int x=0,f=1;char ch=getchar(); for(;ch<'0'||ch>'9';ch=getchar()) if(ch=='-') f=-1; for(;ch>='0'&&ch<='9';ch=getchar()) x=(x<<3)+(x<<1)+(ch&15); return f*x; } int n,m,p,a[1000006],l,r; long long t[1000006]; void Add(int x,int val){ for(;x<=n;x+=(x&(-x))) t[x]+=val; } long long query(int x){ long long sum=0; for(;x;x-=(x&(-x))) sum+=t[x]; return sum; } int main(){ n=read(),m=read(),p=read(); for(int i=1;i<=n;i++) a[i]=read(),Add(i,a[i]); while(m--) l=read(),r=read(),printf("%lld\n",a[1]>=p?query(r)-query(l-1)-1ll*(r-l+1)*p:(query(r)-query(l-1))%p); return 0; }