Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
98211 CSYZ_WanYL 早凉的程序2 C++ 解答错误 20 855 MS 23712 KB 1639 2023-08-14 12:28:06

Tests(2/6):


#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; }


测评信息: