Submission #1141552

#TimeUsernameProblemLanguageResultExecution timeMemory
1141552huoiCoin Collecting (JOI19_ho_t4)C++17
0 / 100
0 ms328 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define INF 9e18 #define BASE 1e9 void solve() { int n; cin >> n; vector<vector<int>> occupied(3, vector<int>(n + 1)); auto check = [&](int r, int c) { return r >= 1 && r <= 2 && c >= 1 && c <= n; }; auto closest = [&](int r, int c) { int ansr = -1, ansc = -1, min_dist = INF; for (int i = 1; i <= 2; i++) { for (int j = 1; j <= n; j++) { if (occupied[i][j]) continue; int dist = abs(r - i) + abs(c - j); if (dist < min_dist) { min_dist = dist; ansr = i, ansc = j; } } } //printf("closest for %lld %lld is %lld %lld\n", r, c, ansr, ansc); if (check(r, c)) occupied[r][c]--; occupied[ansr][ansc]++; return min_dist; }; vector<pair<int, int>> a(2 * n); for (int i = 0; i < 2 * n; i++) { cin >> a[i].second >> a[i].first; auto [r, c] = a[i]; if (check(r, c)) occupied[r][c]++; } int ans = 0; for (auto [r, c] : a) { if (check(r, c) && occupied[r][c] == 1) continue; ans += closest(r, c); } cout << ans; } signed main() { ios_base::sync_with_stdio(0); cin.tie(0); solve(); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...