제출 #1239695

#제출 시각아이디문제언어결과실행 시간메모리
1239695Timosh자리 배치 (IOI18_seats)C++20
0 / 100
4099 ms86992 KiB
#include "bits/stdc++.h" #include "seats.h" using namespace std; struct node { int mx, mn; node() { mx = 0; mn = 1e9; } }; struct segTree { vector<node> t; void init(int N) { t.resize(4 * N); } node merge(node a, node b) { node c; c.mn = min(a.mn, b.mn); c.mx = max(a.mx, b.mx); return c; } void upd(int pos, int x, int l, int r, int i = 1) { if (l == r) t[i].mn = t[i].mx = x; else { int m = (l + r) / 2; if (pos <= m) upd(pos, x, l, m, i * 2); else upd(pos, x, m + 1, r, i * 2 + 1); t[i] = merge(t[i * 2], t[i * 2 + 1]); } } node get(int l, int r, int tl, int tr, int i = 1) { if (l > tr || tl > r) return t[0]; if (l <= tl && tr <= r) return t[i]; int m = (tl + tr) / 2; return merge(get(l, r, tl, m, i * 2), get(l, r, m + 1, tr, i * 2 + 1)); } }; segTree x, y; vector<pair<int, int>> X; int n, m; void give_initial_chart(int H, int W, std::vector<int> R, std::vector<int> C) { x.init(H * W); y.init(H * W); for (int i = 0; i < H * W; i++) x.upd(i, R[i], 0, H * W - 1), y.upd(i, C[i], 0, H * W - 1), X.push_back({R[i], C[i]}); n = H; m = W; } int swap_seats(int a, int b) { swap(X[a], X[b]); x.upd(a, X[a].first, 0, n * m - 1); y.upd(a, X[a].second, 0, n * m - 1); x.upd(b, X[b].first, 0, n * m - 1); y.upd(b, X[b].second, 0, n * m - 1); int ans = 0; int cur = 0; // node h, w; while (cur < n * m) { // h.mn = min(h.mn, X[cur].first); // h.mx = max(h.mx, X[cur].first); // w.mn = min(w.mn, X[cur].second); // w.mx = max(w.mx, X[cur].second); node h = x.get(0, cur, 0, n * m - 1); node w = y.get(0, cur, 0, n * m - 1); if (cur == (h.mx - h.mn) * (w.mx - w.mn) - 1) ans++; cur++; } cout << ans; }

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

seats.cpp: In function 'int swap_seats(int, int)':
seats.cpp:92:1: warning: no return statement in function returning non-void [-Wreturn-type]
   92 | }
      | ^
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...