提交时间:2023-08-14 12:22:22

运行 ID: 98147

#include<bits/stdc++.h> using namespace std; #define int long long const int MX=2e6+100; int n,m,mod,a[MX],s[MX]; bool oka,okb,okc,okd; signed main(){ ios::sync_with_stdio(0); cin>>n>>m>>mod; for(int i=1;i<=n;i++){ cin>>a[i]; if(a[i]>=mod||a[i]<0) oka=1; if(a[i]<mod) okb=1; } for(int i=1;i<n;i++){ if(a[i]>a[i+1]) okc=1; if(a[i]<a[i+1]) okd=1; } if(!oka){ for(int i=1;i<=n;i++){ s[i]=s[i-1]+a[i]; } for(int i=1;i<=m;i++){ int l,r; cin>>l>>r; cout<<(s[r]-s[l-1])%mod<<'\n'; } return 0; } if(!okb){ for(int i=1;i<=n;i++){ s[i]=s[i-1]+a[i]; } for(int i=1;i<=m;i++){ int l,r; cin>>l>>r; cout<<s[r]-s[l-1]-(r-l+1)*mod<<'\n'; } return 0; } if(!okc){ for(int i=1;i<=n;i++) s[i]=s[i-1]+a[i]; for(int i=1;i<=m;i++){ int sl,sr; cin>>sl>>sr; int l=sl-1,r=sr; while(l<r){ int mid=l+r+1>>1; if(s[mid]-s[sl-1]<mod) l=mid; else r=mid-1; } cout<<s[sr]-s[sl-1]-mod*(sr-l)<<'\n'; } return 0; } for(int i=1; i<=m; ++i) { int l,r; cin>>l>>r; long long ans=0; for(int j=l; j<=r; ++j) { ans+=a[j]; if(ans>=mod) ans-=mod; } cout<<ans<<'\n'; } return 0; }