QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#846934 | #6143. 滚榜 | hamsterball | 100 ✓ | 137ms | 4088kb | C++14 | 1.9kb | 2025-01-07 16:05:52 | 2025-01-07 16:05:52 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
const int MAXN=15;
const int MAXM=503;
const int MAXV=1e4+3;
const int MAXS=1<<13;
int n,m,a[MAXN],cnt[MAXN][MAXM],mx;
vector<int> lft,rhs;
inline ll solve()
{
for(int i=0;i<=n;i++)
fill_n(cnt[i],m+1,0);
do
{
int used=0;
for(int i=1;i<rhs.size();i++)
{
used+=(rhs.size()-i)*max(0,a[rhs[i-1]]-a[rhs[i]]
+(rhs[i-1]<rhs[i]));
if(used>m) break;
}
if(used<=m) ++cnt[rhs.front()][used];
} while(next_permutation(rhs.begin(),rhs.end()));
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cnt[i][j]+=cnt[i][j-1];
ll res=0;
do
{
int used=(a[mx]-a[lft.front()]+(mx<lft.front()))*n;
for(int i=1;i<lft.size();i++)
{
used+=(n-i)*max(0,a[lft[i-1]]-a[lft[i]]
+(lft[i-1]<lft[i]));
if(used>m) break;
}
if(used>m) continue;
for(int i:rhs)
{
int now=used+(n-lft.size())*
max(0,a[lft.back()]-a[i]+(lft.back()<i));
if(now<=m) res+=cnt[i][m-now];
}
} while(next_permutation(lft.begin(),lft.end()));
return res;
}
inline ll enumerate()
{
ll res=0;
for(int i=1;i<1<<n;i++)
if(__builtin_popcount(i)==(n>>1))
{
lft.clear(),rhs.clear();
for(int j=0;j<n;j++)
if(i>>j&1) lft.push_back(j+1);
else rhs.push_back(j+1);
res+=solve();
}
return res;
}
int main()
{
scanf("%d%d",&n,&m);
if(n==1) return putchar('1'),0;
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
for(int i=1;i<=n;i++)
if(a[mx]<a[i]||(a[mx]==a[i]&&i<mx)) mx=i;
printf("%lld",enumerate());
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Pretests
Final Tests
Test #1:
score: 5
Accepted
time: 0ms
memory: 3800kb
input:
2 8 8950 8954
output:
2
result:
ok 1 number(s): "2"
Test #2:
score: 5
Accepted
time: 0ms
memory: 3764kb
input:
2 10 8841 8843
output:
2
result:
ok 1 number(s): "2"
Test #3:
score: 5
Accepted
time: 0ms
memory: 3812kb
input:
3 9 8765 8761 8765
output:
2
result:
ok 1 number(s): "2"
Test #4:
score: 5
Accepted
time: 0ms
memory: 3808kb
input:
3 8 8385 8385 8387
output:
6
result:
ok 1 number(s): "6"
Test #5:
score: 5
Accepted
time: 0ms
memory: 3860kb
input:
3 9 8581 8585 8582
output:
2
result:
ok 1 number(s): "2"
Test #6:
score: 5
Accepted
time: 0ms
memory: 3744kb
input:
8 100 8856 8864 8858 8860 8856 8863 8859 8857
output:
17589
result:
ok 1 number(s): "17589"
Test #7:
score: 5
Accepted
time: 0ms
memory: 3876kb
input:
8 100 8238 8239 8245 8244 8245 8244 8238 8244
output:
32475
result:
ok 1 number(s): "32475"
Test #8:
score: 5
Accepted
time: 0ms
memory: 3796kb
input:
8 100 9804 9806 9807 9802 9801 9803 9801 9806
output:
37012
result:
ok 1 number(s): "37012"
Test #9:
score: 5
Accepted
time: 2ms
memory: 3820kb
input:
10 200 8002 8014 8011 8013 8002 8003 8002 8016 8009 8004
output:
606309
result:
ok 1 number(s): "606309"
Test #10:
score: 5
Accepted
time: 2ms
memory: 3796kb
input:
10 200 8324 8323 8328 8322 8325 8328 8328 8323 8334 8323
output:
2504995
result:
ok 1 number(s): "2504995"
Test #11:
score: 5
Accepted
time: 2ms
memory: 4076kb
input:
10 200 9416 9415 9417 9404 9408 9409 9410 9416 9415 9411
output:
2553164
result:
ok 1 number(s): "2553164"
Test #12:
score: 5
Accepted
time: 2ms
memory: 3796kb
input:
10 200 9422 9430 9425 9425 9425 9423 9431 9428 9432 9434
output:
2687280
result:
ok 1 number(s): "2687280"
Test #13:
score: 5
Accepted
time: 26ms
memory: 3800kb
input:
12 300 9281 9292 9279 9280 9289 9291 9285 9279 9280 9281 9290 9281
output:
197821618
result:
ok 1 number(s): "197821618"
Test #14:
score: 5
Accepted
time: 27ms
memory: 4084kb
input:
12 300 9737 9726 9731 9736 9723 9727 9722 9732 9736 9733 9737 9728
output:
196607151
result:
ok 1 number(s): "196607151"
Test #15:
score: 5
Accepted
time: 26ms
memory: 3800kb
input:
12 300 8707 8708 8712 8704 8705 8704 8716 8711 8713 8712 8702 8710
output:
337047589
result:
ok 1 number(s): "337047589"
Test #16:
score: 5
Accepted
time: 26ms
memory: 4088kb
input:
12 300 9200 9194 9191 9195 9197 9192 9206 9206 9197 9198 9192 9202
output:
164570332
result:
ok 1 number(s): "164570332"
Test #17:
score: 5
Accepted
time: 133ms
memory: 3820kb
input:
13 500 8217 8233 8238 8217 8237 8237 8217 8217 8230 8234 8225 8223 8220
output:
1500488819
result:
ok 1 number(s): "1500488819"
Test #18:
score: 5
Accepted
time: 134ms
memory: 3796kb
input:
13 500 9781 9780 9772 9779 9785 9788 9788 9777 9791 9784 9782 9777 9768
output:
4627756434
result:
ok 1 number(s): "4627756434"
Test #19:
score: 5
Accepted
time: 135ms
memory: 3828kb
input:
13 500 8096 8078 8103 8104 8085 8089 8081 8085 8102 8095 8097 8100 8090
output:
1388414345
result:
ok 1 number(s): "1388414345"
Test #20:
score: 5
Accepted
time: 137ms
memory: 3800kb
input:
13 500 8739 8728 8743 8727 8730 8735 8733 8738 8731 8743 8728 8722 8722
output:
3106123719
result:
ok 1 number(s): "3106123719"
Extra Test:
score: 0
Extra Test Passed