QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#240811#6346. Record Parity45645A#WA 79ms20912kbC++171.1kb2023-11-05 19:34:342023-11-05 19:34:35

Judging History

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

  • [2023-11-05 19:34:35]
  • 评测
  • 测评结果:WA
  • 用时:79ms
  • 内存:20912kb
  • [2023-11-05 19:34:34]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;
inline int read()
{
	char ch;
	while((ch=getchar())<'0'||ch>'9');
	int res=ch-'0';
	while((ch=getchar())>='0'&&ch<='9') res=res*10+ch-'0';
	return res;
}
const int N=1000100;
const int mod=998244353;
int n,a[N],jc[N],ny[N];
int ksm(int x,int K)
{
	int res=1;
	while(K)
	{
		if(K&1) res=1ll*res*x%mod;
		K>>=1;
		x=1ll*x*x%mod;
	}
	return res;
}
int C(int n,int m)
{
	return 1ll*jc[n]*ny[n-m]%mod*ny[m]%mod;
}
int mn[N],b[N];
int main()
{
	n=read();int K=read();
	jc[0]=1;
	for(int i=1;i<=n;i++) a[i]=read(),jc[i]=1ll*jc[i-1]*i%mod;
	ny[n]=ksm(jc[n],mod-2);
	for(int i=n-1;i>=0;i--) ny[i]=1ll*ny[i+1]*(i+1)%mod;
	mn[n+1]=n+1;
	for(int i=n;i>=1;i--) mn[i]=min(mn[i+1],a[i]);
	int tmp=0,ans=0;
	for(int i=1;i<=n;i++)
	{
		int lst=0;
		if(!tmp||a[i]>b[tmp]) b[lst=++tmp]=a[i];
		else
		{
			int l=1,r=tmp;
			while(l<=r)
			{
				int mid=l+r>>1;
				if(b[mid]>a[i]) r=mid-1;
				else l=mid+1;
			}
			b[lst=l]=a[i];
		}
		if(lst>=K&&a[i]<mn[i+1]) (ans+=C(lst-1,K-1))%=mod;
	}
	if(K&1) printf("%d",(mod-ans)%mod);
	else printf("%d",ans);
	return 0;
}

详细

Test #1:

score: 100
Accepted
time: 0ms
memory: 11940kb

input:

5 2
4 1 2 5 3

output:

3

result:

ok 1 number(s): "3"

Test #2:

score: 0
Accepted
time: 0ms
memory: 11692kb

input:

7 3
1 2 3 4 5 6 7

output:

998244318

result:

ok 1 number(s): "998244318"

Test #3:

score: 0
Accepted
time: 0ms
memory: 11748kb

input:

5 5
2 5 4 1 3

output:

0

result:

ok 1 number(s): "0"

Test #4:

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

input:

10 3
9 7 3 6 10 4 8 2 5 1

output:

0

result:

ok 1 number(s): "0"

Test #5:

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

input:

100 76
40 30 48 76 60 22 52 75 31 23 63 86 94 3 45 93 73 37 88 96 77 67 84 85 97 79 25 69 49 47 51 91 58 28 41 53 78 5 46 65 42 56 26 50 64 61 83 29 71 59 9 66 39 32 44 6 8 55 2 54 35 38 72 33 43 99 16 12 62 80 89 98 90 74 87 100 57 11 15 24 7 68 21 27 36 10 92 82 14 95 13 81 20 1 19 17 34 70 18 4

output:

0

result:

ok 1 number(s): "0"

Test #6:

score: 0
Accepted
time: 79ms
memory: 19396kb

input:

999999 39332
451414 609108 131036 847161 253700 55582 818258 222276 337577 950477 824707 809617 551654 567203 661380 421234 351861 954465 73542 956874 530136 870993 631237 988010 133954 853588 558656 321266 299916 335021 347302 275968 582468 281193 693266 634308 744833 497969 394896 778896 710277 42...

output:

0

result:

ok 1 number(s): "0"

Test #7:

score: 0
Accepted
time: 79ms
memory: 20912kb

input:

1000000 46282
375837 94088 104451 696764 777873 787329 97811 343419 440438 65609 4790 470282 363111 811237 253643 28392 882823 98152 156690 823537 77896 380936 675851 402343 705542 543953 781400 8146 338069 98261 262758 527678 637070 226497 825938 85884 654134 676334 743404 799028 584462 219375 2467...

output:

0

result:

ok 1 number(s): "0"

Test #8:

score: 0
Accepted
time: 0ms
memory: 11688kb

input:

10 3
1 3 2 4 6 8 5 9 10 7

output:

998244343

result:

ok 1 number(s): "998244343"

Test #9:

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

input:

10 6
1 2 3 4 5 6 7 8 9 10

output:

210

result:

ok 1 number(s): "210"

Test #10:

score: -100
Wrong Answer
time: 0ms
memory: 11712kb

input:

100 4
1 2 3 6 5 7 4 8 10 12 9 14 11 15 16 13 18 17 19 20 21 23 22 26 25 24 28 27 29 36 30 32 34 33 31 37 35 39 38 41 40 42 44 43 48 46 51 49 45 47 54 50 52 53 57 56 55 58 60 62 59 63 66 61 65 67 69 71 70 72 64 68 75 73 78 74 76 77 80 79 81 82 87 83 86 90 84 88 93 92 96 85 95 94 89 91 98 97 100 99

output:

329636

result:

wrong answer 1st numbers differ - expected: '194580', found: '329636'