QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#368038 | #3915. Sort hacking | KLPP# | AC ✓ | 8ms | 7856kb | C++20 | 1.2kb | 2024-03-26 18:53:22 | 2024-03-26 18:53:22 |
Judging History
answer
#include<bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace std;
using namespace __gnu_pbds;
typedef long long int lld;
typedef tree<int,null_type,less<int>,rb_tree_tag,tree_order_statistics_node_update> ordered_set;
#define rep(i,a,b) for(int i=a;i<b;i++)
#define trav(a,v) for(auto a:v)
vector<pair<int,int> >V;
int arr[100];
bool works[(1<<20)];
lld DP[(1<<20)];
void solve(){
int n;
cin>>n;
int m;
cin>>m;
rep(i,0,m){
int x,y;
cin>>x>>y;
x--;y--;
V.push_back({x,y});
}
rep(msk,0,(1<<n)){
rep(i,0,n){
arr[i]=(msk>>i)%2;
//cout<<arr[i];
}
rep(i,0,m){
if(arr[V[i].first]>arr[V[i].second])swap(arr[V[i].first],arr[V[i].second]);
}
works[msk]=true;
rep(i,0,n-1){
if(arr[i]>arr[i+1]){
works[msk]=false;
}
}
//cout<<" "<<works[msk]<<"\n";
}
DP[0]=1;
rep(msk,1,(1<<n)){
DP[msk]=0;
if(works[msk]){
rep(i,0,n){
if((msk&(1<<i))>0){
DP[msk]+=DP[msk-(1<<i)];
}
}
}
//cout<<msk<<" "<<DP[msk]
}
lld fact=1;
rep(i,1,n+1)fact*=i;
cout<<fact-DP[(1<<n)-1]<<"\n";
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
int tt=1;
//cin>>tt;
while(tt--){
solve();
}
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 1ms
memory: 5668kb
input:
3 3 1 2 2 3 1 3
output:
2
result:
ok answer is '2'
Test #2:
score: 0
Accepted
time: 1ms
memory: 5700kb
input:
2 1 1 2
output:
0
result:
ok answer is '0'
Test #3:
score: 0
Accepted
time: 0ms
memory: 3624kb
input:
2 1 2 1
output:
2
result:
ok answer is '2'
Test #4:
score: 0
Accepted
time: 1ms
memory: 5756kb
input:
3 2 2 3 1 3
output:
4
result:
ok answer is '4'
Test #5:
score: 0
Accepted
time: 0ms
memory: 3624kb
input:
4 6 2 1 3 4 1 3 2 4 1 2 3 4
output:
0
result:
ok answer is '0'
Test #6:
score: 0
Accepted
time: 0ms
memory: 5700kb
input:
4 5 2 1 3 4 1 3 2 4 1 2
output:
12
result:
ok answer is '12'
Test #7:
score: 0
Accepted
time: 0ms
memory: 3644kb
input:
4 4 2 1 3 4 1 3 2 4
output:
20
result:
ok answer is '20'
Test #8:
score: 0
Accepted
time: 0ms
memory: 3640kb
input:
4 3 2 1 3 4 1 3
output:
20
result:
ok answer is '20'
Test #9:
score: 0
Accepted
time: 0ms
memory: 3720kb
input:
5 9 2 1 4 5 3 5 3 4 1 5 1 3 2 4 1 2 3 4
output:
0
result:
ok answer is '0'
Test #10:
score: 0
Accepted
time: 1ms
memory: 5628kb
input:
5 8 2 1 4 5 3 5 3 4 1 5 1 3 2 4 1 2
output:
72
result:
ok answer is '72'
Test #11:
score: 0
Accepted
time: 0ms
memory: 3644kb
input:
5 7 2 1 4 5 3 5 3 4 1 5 1 3 2 4
output:
96
result:
ok answer is '96'
Test #12:
score: 0
Accepted
time: 0ms
memory: 3636kb
input:
6 12 3 2 3 1 2 1 5 6 4 6 4 5 1 5 2 6 1 3 2 4 1 2 3 4
output:
360
result:
ok answer is '360'
Test #13:
score: 0
Accepted
time: 1ms
memory: 5632kb
input:
6 8 3 2 3 1 2 1 5 6 4 6 4 5 1 5 2 6
output:
720
result:
ok answer is '720'
Test #14:
score: 0
Accepted
time: 0ms
memory: 3640kb
input:
8 24 1 2 4 3 3 1 4 2 2 1 4 3 6 5 7 8 5 7 6 8 5 6 7 8 1 5 2 6 3 7 4 8 1 3 2 4 1 2 3 4 5 7 6 8 5 6 7 8
output:
0
result:
ok answer is '0'
Test #15:
score: 0
Accepted
time: 0ms
memory: 3712kb
input:
8 23 1 2 4 3 3 1 4 2 2 1 4 3 6 5 7 8 5 7 6 8 5 6 7 8 1 5 2 6 3 7 4 8 1 3 2 4 1 2 3 4 5 7 6 8 5 6
output:
20160
result:
ok answer is '20160'
Test #16:
score: 0
Accepted
time: 5ms
memory: 3984kb
input:
15 69 2 3 1 3 1 2 4 5 7 6 6 4 7 5 5 4 7 6 5 1 6 2 7 3 3 1 4 2 2 1 4 3 7 5 6 5 8 9 11 10 10 8 11 9 9 8 11 10 13 12 14 15 12 14 13 15 12 13 14 15 8 12 9 13 10 14 11 15 8 10 9 11 8 9 10 11 12 14 13 15 12 13 14 15 1 9 2 10 3 11 4 12 5 13 6 14 7 15 1 5 2 6 3 7 4 8 1 3 2 4 1 2 3 4 5 7 6 8 5 6 7 8 9 13 10 ...
output:
697426329600
result:
ok answer is '697426329600'
Test #17:
score: 0
Accepted
time: 5ms
memory: 5892kb
input:
15 70 2 3 1 3 1 2 4 5 7 6 6 4 7 5 5 4 7 6 5 1 6 2 7 3 3 1 4 2 2 1 4 3 7 5 6 5 8 9 11 10 10 8 11 9 9 8 11 10 13 12 14 15 12 14 13 15 12 13 14 15 8 12 9 13 10 14 11 15 8 10 9 11 8 9 10 11 12 14 13 15 12 13 14 15 1 9 2 10 3 11 4 12 5 13 6 14 7 15 1 5 2 6 3 7 4 8 1 3 2 4 1 2 3 4 5 7 6 8 5 6 7 8 9 13 10 ...
output:
0
result:
ok answer is '0'
Test #18:
score: 0
Accepted
time: 1ms
memory: 5928kb
input:
15 1 2 1
output:
1307674368000
result:
ok answer is '1307674368000'
Test #19:
score: 0
Accepted
time: 7ms
memory: 3892kb
input:
15 105 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 13 14 14 15 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 13 14 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 1 2 2 3 3 4 4 5 5 ...
output:
0
result:
ok answer is '0'
Test #20:
score: 0
Accepted
time: 8ms
memory: 5944kb
input:
15 104 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 13 14 14 15 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 13 14 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 1 2 2 3 3 4 4 5 5 ...
output:
87178291200
result:
ok answer is '87178291200'
Test #21:
score: 0
Accepted
time: 8ms
memory: 5948kb
input:
15 103 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 13 14 14 15 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 13 14 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 1 2 2 3 3 4 4 5 5 ...
output:
174356582400
result:
ok answer is '174356582400'
Test #22:
score: 0
Accepted
time: 7ms
memory: 6012kb
input:
15 102 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 13 14 14 15 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 13 14 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 1 2 2 3 3 4 4 5 5 ...
output:
255307852800
result:
ok answer is '255307852800'
Test #23:
score: 0
Accepted
time: 8ms
memory: 3948kb
input:
15 101 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 13 14 14 15 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 13 14 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 1 2 2 3 3 4 4 5 5 ...
output:
336259123200
result:
ok answer is '336259123200'
Test #24:
score: 0
Accepted
time: 7ms
memory: 6012kb
input:
15 100 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 13 14 14 15 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 13 14 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 1 2 2 3 3 4 4 5 5 ...
output:
410983372800
result:
ok answer is '410983372800'
Test #25:
score: 0
Accepted
time: 7ms
memory: 5856kb
input:
15 99 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 13 14 14 15 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 13 14 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 1 2 2 3 3 4 4 5 5 6...
output:
479959603200
result:
ok answer is '479959603200'
Test #26:
score: 0
Accepted
time: 7ms
memory: 3872kb
input:
15 104 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 13 14 14 15 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 13 14 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 1 2 2 3 3 4 4 5 5 ...
output:
261273600
result:
ok answer is '261273600'
Test #27:
score: 0
Accepted
time: 6ms
memory: 3928kb
input:
15 105 2 1 3 2 4 3 5 4 6 5 7 6 8 7 9 8 10 9 11 10 12 11 13 12 14 13 15 14 2 1 3 2 4 3 5 4 6 5 7 6 8 7 9 8 10 9 11 10 12 11 13 12 14 13 2 1 3 2 4 3 5 4 6 5 7 6 8 7 9 8 10 9 11 10 12 11 13 12 2 1 3 2 4 3 5 4 6 5 7 6 8 7 9 8 10 9 11 10 12 11 2 1 3 2 4 3 5 4 6 5 7 6 8 7 9 8 10 9 11 10 2 1 3 2 4 3 5 4 6 ...
output:
1307674368000
result:
ok answer is '1307674368000'
Test #28:
score: 0
Accepted
time: 8ms
memory: 7856kb
input:
15 200 2 1 3 2 4 3 5 4 6 5 7 6 8 7 9 8 10 9 11 10 12 11 13 12 14 13 15 14 2 1 3 2 4 3 5 4 6 5 7 6 8 7 9 8 10 9 11 10 12 11 13 12 14 13 2 1 3 2 4 3 5 4 6 5 7 6 8 7 9 8 10 9 11 10 12 11 13 12 2 1 3 2 4 3 5 4 6 5 7 6 8 7 9 8 10 9 11 10 12 11 2 1 3 2 4 3 5 4 6 5 7 6 8 7 9 8 10 9 11 10 2 1 3 2 4 3 5 4 6 ...
output:
1307674368000
result:
ok answer is '1307674368000'
Test #29:
score: 0
Accepted
time: 0ms
memory: 3556kb
input:
1 1 1 1
output:
0
result:
ok answer is '0'
Test #30:
score: 0
Accepted
time: 1ms
memory: 5768kb
input:
2 2 1 1 2 2
output:
1
result:
ok answer is '1'
Test #31:
score: 0
Accepted
time: 0ms
memory: 3620kb
input:
2 2 2 2 1 1
output:
1
result:
ok answer is '1'
Test #32:
score: 0
Accepted
time: 0ms
memory: 3700kb
input:
3 3 1 1 2 2 3 3
output:
5
result:
ok answer is '5'
Test #33:
score: 0
Accepted
time: 2ms
memory: 5924kb
input:
15 5 1 2 2 3 3 4 4 5 5 6
output:
1307674367968
result:
ok answer is '1307674367968'
Test #34:
score: 0
Accepted
time: 3ms
memory: 5956kb
input:
15 40 2 3 1 3 1 2 4 5 7 6 6 4 7 5 5 4 7 6 5 1 6 2 7 3 3 1 4 2 2 1 4 3 7 5 6 5 8 9 11 10 10 8 11 9 9 8 11 10 13 12 14 15 12 14 13 15 12 13 14 15 8 12 9 13 10 14 11 15 8 10 9 11 8 9 10 11 12 14 13 15
output:
1307674368000
result:
ok answer is '1307674368000'
Test #35:
score: 0
Accepted
time: 0ms
memory: 3564kb
input:
5 9 1 2 2 3 3 4 4 5 1 2 2 3 3 4 2 3 1 2
output:
12
result:
ok answer is '12'
Test #36:
score: 0
Accepted
time: 1ms
memory: 5680kb
input:
8 22 1 2 4 3 3 1 4 2 2 1 4 3 6 5 7 8 5 7 6 8 5 6 7 8 1 5 2 6 3 7 4 8 1 3 2 4 1 2 3 4 5 7 6 8
output:
31680
result:
ok answer is '31680'