Submission #1179776

#TimeUsernameProblemLanguageResultExecution timeMemory
1179776MongHwaCoin Collecting (JOI19_ho_t4)C++20
100 / 100
24 ms2632 KiB
#pragma GCC optimize ("Ofast") #pragma GCC optimize ("unroll-loops") #include <iostream> using namespace std; #define ll long long #define INF 1e17 #define X first #define Y second ll stage[100005][3]; int main() { ios::sync_with_stdio(0); cin.tie(0); int n; cin >> n; ll ans = 0; for(int i = 0; i < 2*n; i++) { int x, y; cin >> x >> y; if(1 <= x && x <= n) { if(y > 1) { stage[x][2]++; ans += (y-2); } else { stage[x][1]++; ans += abs(1-y); } } else if(x < 1) { if(y > 1) { stage[1][2]++; ans += (abs(1-x)+abs(y-2)); } else { stage[1][1]++; ans += (abs(1-x)+abs(y-1)); } } else { if(y > 1) { stage[n][2]++; ans += (abs(n-x)+abs(y-2)); } else { stage[n][1]++; ans += (abs(n-x)+abs(y-1)); } } } ll val1 = 0, val2 = 0; for(int i = 1; i <= n; i++) { val1 += (stage[i][1]-1); val2 += (stage[i][2]-1); if(val1 > 0 && val2 < 0) { ll tmp = min(val1, -val2); ans += tmp; val1 -= tmp; val2 += tmp; } if(val1 < 0 && val2 > 0) { ll tmp = min(-val1, val2); ans += tmp; val1 += tmp; val2 -= tmp; } ans += (abs(val1)+abs(val2)); } cout << ans << '\n'; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...