제출 #1281254

#제출 시각아이디문제언어결과실행 시간메모리
1281254Faggi드문 곤충 (IOI22_insects)C++20
컴파일 에러
0 ms0 KiB
#include <bits/stdc++.h> #define ll long long #define sz(x) int(x.size()) #define forn(i, n) for (i = 0; i < n; i++) #define all(x) x.begin(), x.end() #define pb push_back #define mp make_pair #define fr first #define se second using namespace std; void move_inside(int i); void move_outside(int i); int press_button(); vector<bool> vis, en; map<vector<bool>, ll> memo; ll n; void mi(ll x) { en[x] = 1; } void mo(ll x) { en[x] = 0; } ll pBtn() { auto it = memo.find(en); if (it != memo.end()) return it->second; for (ll i = 0; i < sz(en); i++) { if (vis[i] != en[i]) { if (en[i]) move_inside(i); else move_outside(i); vis[i] = en[i]; } } ll x = press_button(); memo[vis] = x; return x; } int min_cardinality(int N) { n = N; vis.assign(N, 0); en.assign(N, 0); vector<ll> in, out, ins; forn(i, n) ins.pb(i); mi(0); in.pb(0); ll inside = 1; for (auto k : ins) { if (k == 0) continue; mi(k); if (pBtn() > 1) { mo(k); out.pb(k); } else { in.pb(k); inside++; } } ll distinct = inside; ins = out; ll l = 1, r = n / distinct; ll ans = 1; while (l <= r) { ll mid = (l + r) / 2; vector<ll> in2, out2; ll added = 0; for (auto k : ins) { mi(k); if (pBtn() > mid) { mo(k); out2.pb(k); } else { in2.pb(k); added++; } } if (added + distinct * (mid - 1) == mid * distinct) { ans = mid; l = mid + 1; ins = out2; } else { for (auto k : in2) mo(k); r = mid - 1; ins = in2; } } return int(ans); }

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

insects.cpp: In function 'int min_cardinality(int)':
insects.cpp:56:10: error: 'i' was not declared in this scope; did you mean 'in'?
   56 |     forn(i, n) ins.pb(i);
      |          ^
insects.cpp:4:25: note: in definition of macro 'forn'
    4 | #define forn(i, n) for (i = 0; i < n; i++)
      |                         ^