Submission #773274

#TimeUsernameProblemLanguageResultExecution timeMemory
773274Sami_MassahCoin Collecting (JOI19_ho_t4)C++17
100 / 100
72 ms15380 KiB
#include <bits/stdc++.h> using namespace std; const long long maxn = 2e5 + 12, mod = 1e9 + 7; long long n, a[3][maxn], x[maxn], y[maxn]; set <int> Q[3]; int main(){ ios_base::sync_with_stdio(false), cin.tie(0); cin >> n; for(int i = 0; i < 2 * n; i++) cin >> x[i] >> y[i]; long long d = 0; for(int i = 0; i < 2 * n; i++){ if(y[i] < 1 || 2 < y[i]){ if(y[i] < 1){ d += 1 - y[i]; y[i] = 1; } else{ d += y[i] - 2; y[i] = 2; } } if(x[i] < 1 || n < x[i]){ if(x[i] < 1){ d += 1 - x[i]; x[i] = 1; } else{ d += x[i] - n; x[i] = n; } } a[y[i]][x[i]] += 1; } long long ans = 0; /* cout << endl; for(int i = 1; i <= n; i++) cout << a[1][i] << ' '; cout << endl; for(int i = 1; i <= n; i++) cout << a[2][i] << ' '; cout << endl;*/ for(int i = 1; i <= n; i++){ if(a[1][i] == 0) Q[1].insert(i); if(a[2][i] == 0){ Q[2].insert(i); } while(a[1][i] > 1 && Q[1].size()){ ans += abs(*Q[1].begin() - i); a[1][i] -= 1; Q[1].erase(Q[1].begin()); } while(a[2][i] > 1 && Q[2].size()){ ans += abs(*Q[2].begin() - i); a[2][i] -= 1; Q[2].erase(Q[2].begin()); } while(a[1][i] > 1 && Q[2].size()){ ans += abs(*Q[2].begin() - i) + 1; a[1][i] -= 1; Q[2].erase(Q[2].begin()); } while(a[2][i] > 1 && Q[1].size()){ ans += abs(*Q[1].begin() - i) + 1; a[2][i] -= 1; Q[1].erase(Q[1].begin()); } while(a[1][i] > 1){ a[1][i + 1] += 1; ans += 1; a[1][i] -= 1; // cout << i << endl; } while(a[2][i] > 1){ a[2][i + 1] += 1; ans += 1; a[2][i] -= 1; } } cout << ans + d << endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...