QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#35534#1191. Reordering the Documentsqingyu_orzWA 2ms8196kbC++201.4kb2022-06-16 17:34:522022-06-16 17:34:55

Judging History

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

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2022-06-16 17:34:55]
  • 评测
  • 测评结果:WA
  • 用时:2ms
  • 内存:8196kb
  • [2022-06-16 17:34:52]
  • 提交

answer

#include<bits/stdc++.h>
#define mod 1000000007
using namespace std;
int a[5005];
int qz[5005],hz[5005];
int zd[5005];
int x[5005],y[5005],s[5005];
int f[5005][5005];
int main(){
	int n,m;
	cin>>n>>m;
	for(int i=1;i<=n;++i)scanf("%d",&a[i]);
	int mx1=0,mx2=INT_MAX;
	for(int i=1;i<=n;++i){
		if(mx1<a[i])qz[i]=1,mx1=a[i];
		else qz[i]=0;
	}
	for(int i=n;i>=1;--i){
		if(mx2>a[i])hz[i]=1,mx2=a[i];
		else hz[i]=0;
	}
	for(int i=1;i<=n;++i){
		if(!qz[i]&&!hz[i]){
			cout<<0<<endl;
			return 0;
		}
	}
	int l=0;
	for(int i=1;i<=n;++i)if(qz[i])zd[++l]=i;
	zd[l+1]=n+1;
	int k=0;
	int m1=0,h1=0,h2=0;
	for(int i=1;i<=l;++i){
		if(!h1){
			h1=1;
			h2=zd[i+1]-zd[i]-1;
			m1=a[zd[i]];
		}else{
			int m2=INT_MAX;
			for(int j=zd[i]+1;j<=zd[i+1]-1;++j){
				m2=min(m2,a[j]);
			}
			if(m1>m2){
				m1=a[zd[i]];
				++h1;
				h2+=zd[i+1]-zd[i]-1;
			}else{
				++k;
				x[k]=h1,y[k]=h2;
				m1=0,h1=0,h2=0;
				h1=1;
				h2=zd[i+1]-zd[i]-1;
				m1=a[zd[i]];
			}
		}
	}
	if(h1){
		++k;
		x[k]=h1,y[k]=h2;
	}
	for(int i=1;i<=k;++i)s[i]=s[i-1]+x[i]+y[i];
	f[0][0]=1;
	for(int i=1;i<=k;++i)for(int j=0;j<=n;++j){
		if(j>m||s[i]-j>m)continue;
		if(j>=x[i])f[i][j]=(f[i][j]+f[i-1][j-x[i]])%mod;
		if(j>=y[i])f[i][j]=(f[i][j]+f[i-1][j-y[i]])%mod;
	}
	int ans=0;
	for(int i=0;i<=n;++i)ans=(ans+f[k][i])%mod;
	cout<<ans<<endl;
	return 0;
}

详细

Test #1:

score: 100
Accepted
time: 2ms
memory: 3536kb

input:

6 3
1 3 4 2 6 5

output:

4

result:

ok answer is '4'

Test #2:

score: 0
Accepted
time: 2ms
memory: 3732kb

input:

6 6
1 3 4 2 6 5

output:

8

result:

ok answer is '8'

Test #3:

score: 0
Accepted
time: 2ms
memory: 3724kb

input:

4 4
4 3 1 2

output:

0

result:

ok answer is '0'

Test #4:

score: 0
Accepted
time: 2ms
memory: 3808kb

input:

6 3
1 3 4 2 6 5

output:

4

result:

ok answer is '4'

Test #5:

score: 0
Accepted
time: 2ms
memory: 5696kb

input:

6 6
1 3 4 2 6 5

output:

8

result:

ok answer is '8'

Test #6:

score: 0
Accepted
time: 2ms
memory: 3636kb

input:

4 4
4 3 1 2

output:

0

result:

ok answer is '0'

Test #7:

score: -100
Wrong Answer
time: 1ms
memory: 8196kb

input:

1000 500
4 5 6 8 10 11 12 13 14 15 20 23 25 26 28 29 33 35 1 2 36 38 3 7 41 9 16 44 48 17 18 51 52 53 19 21 54 22 24 59 61 62 27 67 30 31 32 34 68 69 37 39 73 40 76 77 42 81 83 43 85 45 87 46 89 94 47 95 49 50 97 101 55 103 105 56 57 58 106 60 108 110 63 111 114 64 115 65 119 66 70 71 120 121 72 124...

output:

456993559

result:

wrong answer expected '11363968', found '456993559'