QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#690430 | #9353. Interesting Permutation | zqx | WA | 67ms | 5516kb | C++23 | 1.2kb | 2024-10-30 22:07:23 | 2024-10-30 22:07:24 |
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++){
pre[i]=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 {
int x=h[i]-h[i-1];
//变高,前面至少h[i-1]+1
if(h[i-1]+1+x<=n){
(dp[i]+=dp[i-1]*(n-(h[i-1]+1+x)+1)%mod)%=mod;
}
}
}
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: 3548kb
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: 67ms
memory: 5516kb
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 896477931 312942812 116153578 258658015 0 599245707 497857052 888480326 322174075 570819046 36 704617987 725925561 2 94693976 227670483 1293366 0 2 0 12377607 0 0 169345579 0 0 665579619 1440 940858734 45722880 0 70437118 0 625143374 132002948 2 716023210 177497257 0 0 2 0 2 372424716 0 0 ...
result:
wrong answer 6th lines differ - expected: '0', found: '896477931'