Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
98211 | CSYZ_WanYL | 早凉的程序2 | C++ | 解答错误 | 20 | 855 MS | 23712 KB | 1639 | 2023-08-14 12:28:06 |
#include<bits/stdc++.h> #define int long long using namespace std; const int N=1e6+5; int n,m,mod; int a[N]; int sum[N]; int cnt[N]; signed main(){ ios::sync_with_stdio(false); cin>>n>>m>>mod; bool A=true,B=true,C=true,D=true; for(int i=1;i<=n;i++){ cin>>a[i]; if(a[i]<0||a[i]>=mod) A=false; if(a[i]<mod) B=false; if(a[i]<a[i-1]) C=false; if(a[i]>a[i-1]) D=false; sum[i]=sum[i-1]+a[i]; cnt[i]=cnt[i-1]+a[i]/mod; } if(A==true){ while(m--){ int l,r; cin>>l>>r; int x=sum[r]-sum[l-1]; cout<<x%mod<<"\n"; } return 0; } if(B==true){ while(m--){ int l,r; cin>>l>>r; int x=sum[r]-sum[l-1]; cout<<x-min(cnt[r]-cnt[l-1],r-l+1)*mod<<"\n"; } return 0; } if(C==true){ int pos=n; for(int i=1;i<=n;i++){ if(a[i]>=mod){ pos=i; break; } } while(m--){ int l,r; cin>>l>>r; if(r<pos) cout<<(sum[r]-sum[l-1])%mod<<"\n"; else if(l<pos&&r>=pos) cout<<(sum[pos-1]-sum[l-1])%mod+((sum[r]-sum[pos-1])-min(cnt[r]-cnt[pos-1],r-pos+1)*mod)<<"\n"; else cout<<sum[r]-sum[l-1]-min(cnt[r]-cnt[l-1],r-l+1)*mod<<"\n"; } return 0; } if(D==true){ int pos=1; for(int i=1;i<=n;i++){ if(a[i]<mod){ pos=i; break; } } while(m--){ int l,r; cin>>l>>r; if(l>pos) cout<<(sum[r]-sum[l-1])%mod<<"\n"; else if(l<=pos&&r>pos) cout<<(sum[r]-sum[pos])%mod+((sum[pos]-sum[l-1])-min(cnt[pos]-cnt[l-1],pos-l+1)*mod)<<"\n"; else cout<<sum[r]-sum[l-1]-min(cnt[r]-cnt[l-1],r-l+1)*mod<<"\n"; } return 0; } return 0; }