제출 #418376

#제출 시각아이디문제언어결과실행 시간메모리
418376ACmachineAmusement Park (CEOI19_amusementpark)C++17
42 / 100
3043 ms162208 KiB
#include <bits/stdc++.h> using namespace std; #define FOR(i, j, k, l) for(int i = (j); i < (k); i += (l)) #define FORD(i, j, k, l) for(int i = (j); i >= (k); i -= (l)) #define REP(i, n) FOR(i, 0, n, 1) #define REPD(i, n) FORD(i, n, 0, 1) #define pb push_back typedef long long ll; const int INF = (int)1e9; const ll INFF = (ll)1e18; const ll mod = 998244353; mt19937_64 rng(time(NULL)); int main(){ ios_base::sync_with_stdio(false); cin.tie(0); int n, m; cin >> n >> m; vector<array<int, 2>> edges; vector<ll> random(m, 0); REP(i, m){ int u, v; cin >> u >> v; u--; v--; edges.pb({u, v}); random[i] = rng(); } unordered_set<ll> uset; vector<int> order(n); iota(order.begin(), order.end(), 0); vector<int> pos(n, 0); ll ans = 0; do{ REP(i, n){ pos[order[i]] = i; } ll hsh = 0; int cost = 0; REP(i, edges.size()){ auto e = edges[i]; if(pos[e[0]] > pos[e[1]]){ hsh += random[i]; cost++; } } if(uset.find(hsh) != uset.end()) continue; uset.insert(hsh); ans += cost; if(ans >= mod) ans -= mod; }while(next_permutation(order.begin(), order.end())); cout << ans << "\n"; return 0; }

컴파일 시 표준 에러 (stderr) 메시지

amusementpark.cpp: In function 'int main()':
amusementpark.cpp:3:44: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::array<int, 2> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    3 | #define FOR(i, j, k, l) for(int i = (j); i < (k); i += (l))
      |                                            ^
amusementpark.cpp:5:19: note: in expansion of macro 'FOR'
    5 | #define REP(i, n) FOR(i, 0, n, 1)
      |                   ^~~
amusementpark.cpp:37:9: note: in expansion of macro 'REP'
   37 |         REP(i, edges.size()){
      |         ^~~
#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...