QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#690436 | #9353. Interesting Permutation | zqx | WA | 55ms | 5592kb | C++23 | 1.1kb | 2024-10-30 22:10:16 | 2024-10-30 22:10:18 |
Judging History
answer
#include<bits/stdc++.h>
#define int long long
#define AC return 0;
#define pii pair<int,int>
#define all(tar) tar.begin(),tar.end()
const int maxx=1e6+5;
const int mod=1e9+7;
using namespace std;
int n,m,t;
int h[maxx];
void solve(){
cin>>n;
for(int i=1;i<=n;i++)cin>>h[i];//mx-mi;
//大部分时候h[i]=h[i-1]
for(int i=1;i<=n;i++){
if(h[i]<h[i-1]||h[i]>=n){
cout<<0<<'\n';
return ;
}
}
vector<int>dp(n+1,0);
vector<int>pre(n+1,0);
dp[2]=2*(n-h[2]);
pre[1]=1;
pre[2]=2;
// cout<<dp[2]<<'\n';
if(h[1]!=0||h[2]==h[1]){
cout<<0<<'\n';
return ;
}
for(int i=3;i<=n;i++){
if(h[i]==h[i-1]){
pre[i]=pre[i-1];
int c=h[i]-(i-pre[i]);
if(c<=0){
cout<<0<<'\n';
return ;
}else {
dp[i]=dp[i-1]*c%mod; ;
}
}else {
pre[i]=i;
int x=h[i]-h[i-1];
if(h[i-1]+1+x<=n){
dp[i]=dp[i-1];
}
}
}
cout<<dp[n]<<'\n';
}
signed main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin>>t;
while(t--){
solve();
}
AC
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 3612kb
input:
3 3 0 2 2 3 0 1 2 3 0 2 3
output:
2 4 0
result:
ok 3 lines
Test #2:
score: -100
Wrong Answer
time: 55ms
memory: 5592kb
input:
10039 14 5 6 7 8 9 10 11 12 13 13 13 13 13 13 14 0 5 6 7 8 9 10 11 12 13 14 14 14 14 1 1 14 0 5 4 8 9 10 11 12 13 13 13 13 13 13 45 0 1 1 2 2 3 5 5 6 6 8 9 11 13 15 17 18 18 20 22 22 24 26 26 26 26 27 27 27 28 30 32 32 33 34 34 34 36 36 38 38 38 39 39 44 24 0 2 3 5 7 9 9 10 11 12 13 14 14 14 14 15 1...
output:
0 0 0 0 0 906878955 2772000 60480 132125738 0 119618791 70698727 32854322 262459867 64381928 36 510030057 2882880 2 623864306 266590077 928316417 0 2 0 749722298 0 0 72765375 0 0 601766295 120 896921735 10080 0 981046471 0 190647348 581311636 2 339292800 22176 0 0 2 0 2 88982982 0 0 0 0 4 604026866 ...
result:
wrong answer 6th lines differ - expected: '0', found: '906878955'