Submission #895953

#TimeUsernameProblemLanguageResultExecution timeMemory
895953hmm789Coin Collecting (JOI19_ho_t4)C++14
0 / 100
1 ms348 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define INF 1000000000000000000 #define MOD 998244353 int32_t main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n, x, y, ans = 0; cin >> n; int a[n][2]; memset(a, 0, sizeof(a)); for(int i = 0; i < 2*n; i++) { cin >> x >> y; if(x < 1) { ans += 1-x; x = 1; } else if(x > n) { ans += x-n; x = n; } if(y < 1) { ans += 1-y; y = 1; } else if(y > 2) { ans += y-2; y = 2; } x--; y--; a[x][y]++; } int i1 = 0, i2 = 0; for(int i = 0; i < n; i++) { while(i1 < n && a[i1][0] == 0) i1++; while(i2 < n && a[i2][1] == 0) i2++; if(i1 == n) { ans += abs(i-i2); a[i2][1]--; while(i2 < n && a[i2][1] == 0) i2++; ans += abs(i-i2)+1; a[i2][1]--; continue; } else if(i2 == n) { ans += abs(i-i1); a[i1][0]--; while(i1 < n && a[i1][0] == 0) i1++; ans += abs(i-i1)+1; a[i1][0]--; continue; } if(i1 <= i && i2 > i) { ans += abs(i-i1); a[i1][0]--; while(i1 < n && a[i1][0] == 0) i1++; } else if(i2 <= i && i1 > i) { ans += abs(i-i2)+1; a[i2][1]--; while(i2 < n && a[i2][1] == 0) i2++; } else if(abs(i-i1) <= abs(i-i2)+1) { ans += abs(i-i1); a[i1][0]--; while(i1 < n && a[i1][0] == 0) i1++; } else { ans += abs(i-i2)+1; a[i2][1]--; while(i2 < n && a[i2][1] == 0) i2++; } if(i1 <= i && i2 > i) { ans += abs(i-i1)+1; a[i1][0]--; while(i1 < n && a[i1][0] == 0) i1++; } else if(i2 <= i && i1 > i) { ans += abs(i-i2); a[i2][1]--; while(i2 < n && a[i2][1] == 0) i2++; } else if(abs(i-i2) <= abs(i-i1)+1) { ans += abs(i-i2); a[i2][1]--; while(i2 < n && a[i2][1] == 0) i2++; } else { ans += abs(i-i1)+1; a[i1][0]--; while(i1 < n && a[i1][0] == 0) i1++; } } cout << ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...