QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#589909 | #6966. 排序问题 | _TLEer_ | 100 ✓ | 574ms | 178680kb | C++14 | 2.0kb | 2024-09-25 20:34:10 | 2024-09-25 20:34:12 |
Judging History
answer
#include<bits/stdc++.h>
#define int long long
using namespace std;
#define MOD 998244353
int jc[10200010],T,n,m,l,r,A,x[200010],p,q;
int adeld,deld,H,adm,h0,ny,invj[10200010],mxs[200010],cnt;
int ksm(int p,int q=MOD-2){
int ans=1;
while(q){
if(q&1){ans=ans*p%MOD;}
p=p*p%MOD;
q>>=1;
}
return ans;
}
map<int,int> mp,mp2;
signed main(){
ios::sync_with_stdio(false);
cin.tie();cout.tie();
jc[0]=invj[0]=jc[1]=1;
for(int i=2;i<=10200000;i++)
jc[i]=(jc[i-1]*i)%MOD;
invj[10200000]=ksm(jc[10200000]);
for(int i=10199999;i>=1;i--){
invj[i]=(invj[i+1]*(i+1))%MOD;
assert(invj[i]*jc[i]%MOD==1);
}
cin>>T;
while(T--){
mp.clear();mp2.clear();
cnt=0;H=-1;
cin>>n>>m>>l>>r;
A=jc[n+m];
for(int i=1;i<=n;i++){
cin>>x[i];deld=r-l+1;
if(l<=x[i]&&x[i]<=r)
mp2[x[i]]++;
else mp[x[i]]++;
}
for(auto x:mp2)
mxs[cnt++]=x.second;
deld-=cnt;
// cout<<cnt<<' '<<deld<<'\n';
sort(mxs,mxs+cnt);
mxs[cnt]=-1;mxs[cnt+1]=0;
for(h0=0;h0<cnt;){
adm=0;adeld=0;
while(mxs[h0+1]==mxs[h0])
adm+=mxs[h0],adeld++,h0++;
adm+=mxs[h0],adeld++,h0++;
if(adm+m>=mxs[h0-1]*(adeld+deld))H=h0,m+=adm,deld+=adeld;
}
for(h0=H;h0<cnt;h0++)
if(mxs[h0])
mp[l+h0-H]=mxs[h0];
// if(deld>r-l+1)deld=r-l+1;
// cout<<A<<' '<<m<<' '<<deld<<'\n';
p=m/deld;
q=m%deld;
if(q&&(p+1)){
// cout<<"A";
// cout<<A<<'\n';
A=(A*ksm(invj[p+1],q))%MOD;
}
if((deld-q)&&(p)){
// cout<<"B";
// cout<<A<<'\n';
A=(A*ksm(invj[p],deld-q))%MOD;
}
// cout<<A<<'\n';
for(auto x:mp)
A=(A*invj[x.second])%MOD;
cout<<A<<'\n';
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Pretests
Final Tests
Test #1:
score: 10
Accepted
time: 85ms
memory: 165360kb
input:
10 5 5 7 8 1 8 5 1 5 8 5 4 7 8 8 2 5 2 6 6 2 8 7 3 4 6 5 8 4 5 1 6 1 8 6 7 8 6 5 6 2 3 6 1 8 7 8 4 7 2 7 3 2 3 6 6 7 4 6 7 1 4 1 4 3 7 2 6 6 3 5 4 1 8 2 5 7 5 4 5 5 8 6 7 3 2 5 8 6 6 6 7 3 2 1 7 8 3 3 2 7 5 6 2 7 6
output:
25200 32432400 283783500 100900800 756756000 831600 6652800 15120 17160 4054050
result:
ok 10 numbers
Test #2:
score: 10
Accepted
time: 82ms
memory: 165280kb
input:
10 8 4 4 4 8 2 5 6 6 3 4 7 5 4 3 4 2 3 2 3 5 7 6 4 8 8 8 4 8 2 2 7 6 6 4 8 1 1 1 6 3 4 6 8 5 6 4 1 4 3 7 8 7 7 3 6 3 7 4 7 4 2 3 5 4 6 6 3 1 1 5 5 8 4 7 8 7 6 2 5 5 7 3 2 5 7 3 4 4 2 4 4 8 4 5 3 6 5 3 6 1
output:
1995840 5040 32432400 9979200 75675600 100900800 3780 3326400 33264 22680
result:
ok 10 numbers
Test #3:
score: 10
Accepted
time: 89ms
memory: 164704kb
input:
10 6 8 6 6 7 4 6 2 7 8 6 4 3 7 7 1 7 4 5 8 6 6 3 4 3 2 4 8 3 8 7 8 4 7 3 4 2 5 5 6 4 6 4 6 8 7 6 4 8 4 7 5 5 6 8 5 3 3 6 7 6 5 3 6 7 2 1 4 6 7 4 4 6 7 5 1 6 6 8 5 8 8 1 5 4 3 1 5 8 4 6 4 3 6 4 4 2 6 3 1
output:
120120 453600 83160 252252000 25200 75600 2494800 1120 1081080 226800
result:
ok 10 numbers
Test #4:
score: 10
Accepted
time: 92ms
memory: 164636kb
input:
300 252 260 70 255 7 267 105 21 192 111 287 290 88 97 39 182 76 36 8 271 138 213 16 36 70 119 8 201 278 84 152 225 226 140 265 90 31 264 206 105 82 18 160 192 10 181 66 91 142 138 174 12 66 108 135 235 160 218 93 280 187 190 115 16 205 109 103 5 35 136 36 72 158 217 240 19 161 32 191 163 170 228 30 ...
output:
817148398 610370492 73619796 392136417 552473682 653457970 930684219 606090256 975095884 234697524 896749755 40695617 733872422 843465298 644613149 962470247 616073681 286282654 600942710 443341314 464816802 236810426 248967685 639669234 379189382 286795229 934537551 908424510 72748187 143184318 462...
result:
ok 300 numbers
Test #5:
score: 10
Accepted
time: 79ms
memory: 164692kb
input:
300 227 278 55 261 255 85 153 179 43 15 8 158 281 261 243 93 242 4 129 222 202 43 279 9 219 243 63 212 38 39 152 299 224 204 267 267 34 154 250 78 40 118 98 186 12 268 277 192 84 170 248 276 96 150 232 209 56 179 82 3 240 150 11 218 173 273 81 288 187 272 140 265 272 42 208 195 86 44 73 93 279 23 19...
output:
608489105 683553113 772344021 595327909 587829438 61561996 182591455 197046497 801484762 992760752 972266746 826930864 799201428 650936985 769547619 956540936 26184676 226387568 313225809 361423520 264247840 354696853 354488314 867487992 710703238 224495630 940509905 212754645 24280788 584233214 721...
result:
ok 300 numbers
Test #6:
score: 10
Accepted
time: 135ms
memory: 173300kb
input:
1008 110000 200000 80799550 89322792 80846588 80840728 80846740 80846226 80837919 80808035 80811892 80821541 80828204 80835347 80833535 80821744 80805463 80848335 80818082 80835681 80807218 80807081 80838326 80821628 80803817 80845303 80840877 80843012 80830165 80826985 80810131 80822178 80809793 80...
output:
434108025 686210610 394302733 421678599 90720 29937600 184800 95040 113513400 554400 378378000 138600 75600 25200 454053600 181440 453600 9979200 110880 2520 50400 50400 1441440 547558588 821337882 29937600 1120 415800 454053600 129163764 7920 831600 45360 277200 138600 277200 100900800 14414400 144...
result:
ok 1008 numbers
Test #7:
score: 10
Accepted
time: 148ms
memory: 172656kb
input:
1169 100000 200000 80463410 88931820 80468507 80491681 80487314 80485519 80482007 80466540 80470566 80507366 80467570 80479753 80513204 80504461 80496204 80464814 80481678 80471573 80508511 80507514 80500322 80491106 80467094 80488511 80482243 80488511 80501739 80476062 80470590 80501419 80506225 80...
output:
868451621 486359522 502941036 201761277 3628800 75600 21527294 55440 9979200 554400 315591831 9979200 19958400 39916800 10080 504504000 119750400 9459450 100900800 277200 5040 907200 50400 362880 3603600 239500800 39916800 19958400 4989600 4989600 479001600 19958400 45360 831441387 2494800 558510847...
result:
ok 1169 numbers
Test #8:
score: 10
Accepted
time: 574ms
memory: 174016kb
input:
16681 200000 200000 76883519 76941647 76887826 76896834 76928035 76920567 76922595 76911193 76908583 76895058 76907525 76899189 76891847 76898478 76901834 76895730 76925717 76885225 76930475 76932521 76925233 76911515 76931174 76884143 76913261 76928484 76897028 76926818 76931633 76893762 76891824 7...
output:
400144591 558540649 241941311 509866966 888386043 170271298 612215140 60744581 41325256 260211701 414637790 665849438 913397652 980765230 254699744 488014740 295550767 128128274 424789214 1247400 279173343 4804800 492688569 263232904 728513423 687990592 75675600 511331093 435245378 321873426 1995840...
result:
ok 16681 numbers
Test #9:
score: 10
Accepted
time: 534ms
memory: 178680kb
input:
16652 200000 112 49071552 49072622 49071552 49071552 49071552 49071552 49071552 49071552 49071552 49071552 49071552 49071552 49071552 49071552 49071552 49071552 49071552 49071552 49071552 49071552 49071552 49071552 49071552 49071552 49071552 49071552 49071552 49071552 49071552 49071552 49071552 4907...
output:
636719725 159360485 766661622 229811031 125681319 215862366 223624928 818712766 623255814 298173039 215155020 402423266 580450882 341728812 687518263 55993447 71161759 512513096 758760158 439461285 604800 252252000 977243351 620421051 378211612 8108100 236730235 179759210 5405400 664370457 12600 296...
result:
ok 16652 numbers
Test #10:
score: 10
Accepted
time: 535ms
memory: 178600kb
input:
16731 200000 104 5062478 5063630 5062478 5062478 5062478 5062478 5062478 5062478 5062478 5062478 5062478 5062478 5062478 5062478 5062478 5062478 5062478 5062478 5062478 5062478 5062478 5062478 5062478 5062478 5062478 5062478 5062478 5062478 5062478 5062478 5062478 5062478 5062478 5062478 5062478 506...
output:
867024637 853235068 342602600 912521724 677376196 836451556 497157986 397366798 451218200 963540106 135969593 67177667 501624342 33196711 344393881 332568003 849320924 128128274 226800 833611556 697208287 790047185 762544679 4989600 457421435 186008666 75600 964382817 450989796 538643438 239500800 6...
result:
ok 16731 numbers
Extra Test:
score: 0
Extra Test Passed