Submission #1095263

#TimeUsernameProblemLanguageResultExecution timeMemory
1095263marAmusement Park (CEOI19_amusementpark)C++14
42 / 100
3072 ms170664 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll nx=11, mx=1e3+5, mod=998244353, mod2=1e12+9;
 
ll n, m, a[mx], b[mx], res, pw[mx];
set<ll> s;
 
int main(){
    cin>>n>>m;
    pw[0]=1;
    for (int i=1; i<=m; i++) pw[i]=(pw[i-1]*2)%mod2;
    for (int i=1; i<=m; i++) cin>>a[i]>>b[i];
    vector<int> v;
    for (int i=1; i<=n; i++) v.push_back(i);
    do {
        ll sm=0, cnt=0;
        for (int i=1; i<=m; i++) if (v[a[i]-1]>v[b[i]-1]) cnt++, sm=(sm+pw[i])%mod2;
        if (s.find(sm)==s.end()) res=(res+cnt)%mod, s.insert(sm);
    } while (next_permutation(v.begin(), v.end()));
    cout<<res;
    
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...