제출 #1124596

#제출 시각아이디문제언어결과실행 시간메모리
1124596SharkyCoin Collecting (JOI19_ho_t4)C++20
0 / 100
0 ms328 KiB
#include "bits/stdc++.h" using namespace std; #define int long long const int N = 1e5 + 10; int x[2 * N], y[2 * N]; int f[N][3]; int ans = 0; int32_t main() { ios::sync_with_stdio(0); cin.tie(0); int n; cin >> n; vector<pair<int, int>> v; for (int i = 1; i <= 2 * n; i++) { cin >> x[i] >> y[i]; if (x[i] < 1) { ans += 1 - x[i]; x[i] = 1; } if (x[i] > n) { ans += x[i] - n; x[i] = n; } if (y[i] < 1) { ans += 1 - y[i]; y[i] = 1; } if (y[i] > 2) { ans += y[i] - 2; y[i] = 2; } f[x[i]][y[i]]++; } vector<int> d[3], s[3]; for (int i = 1; i <= n; i++) { for (int j = 1; j <= 2; j++) { if (f[i][j]) { for (int k = 1; k < f[i][j]; k++) { if (d[j].empty() && d[3-j].empty()) s[j].push_back(i); else if (!d[j].empty()) { ans += abs(i - d[j].back()); d[j].pop_back(); } else { ans += abs(i - d[3-j].back()) + 1; d[3-j].pop_back(); } } } else { if (s[j].empty() && s[3-j].empty()) d[j].push_back(i); else if (!s[j].empty()) { ans += abs(i - s[j].back()); s[j].pop_back(); } else { ans += abs(i - s[3-j].back()) + 1; s[3-j].pop_back(); } } } } cout << ans << '\n'; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...