QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#690416#9353. Interesting PermutationzqxWA 58ms7584kbC++231.3kb2024-10-30 22:05:162024-10-30 22:05:21

Judging History

你现在查看的是最新测评结果

  • [2024-10-30 22:05:21]
  • 评测
  • 测评结果:WA
  • 用时:58ms
  • 内存:7584kb
  • [2024-10-30 22:05:16]
  • 提交

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 {
          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;
		  }
		//   //变矮,前面n-(h[i-1]);
		//   if(n-h[i-1]-x>=1){
		// 	(dp[i]+=dp[i-1]*(n-h[i-1]-x-1+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: 3536kb

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: 58ms
memory: 7584kb

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
0
0
0
0
0
0
0
0
0
0
0
0
0
2
0
0
0
0
2
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
2
0
0
0
0
2
0
2
0
0
0
0
0
4
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
2
0
0
0
0
0
0
0
0
0
0
2
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
4
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
12
0
0
0...

result:

wrong answer 7th lines differ - expected: '24576', found: '0'