Submission #497191

#TimeUsernameProblemLanguageResultExecution timeMemory
497191ergaganCoin Collecting (JOI19_ho_t4)C++17
100 / 100
63 ms5072 KiB
//я так много думал, что опять попал #include <bits/stdc++.h> #define all(x) x.begin(),x.end() #define pb push_back #define ppb pop_back #define pf push_front #define ppf pop_front #define f first #define s second #define left(v) v + v #define right(v) v + v + 1 #define ub upper_bound #define lb lower_bound #define pll pair<ll,ll> using namespace std; typedef long long ll; //17 SEVENTEEN const long double Pi = acos(-1.0); const ll dx[] = {0,0,1,-1}; const ll dy[] = {1,-1,0,0}; const ll N = (ll) 1e6 + 17; const ll M = (ll) 5e3 + 69; const ll inf = (ll) 1e14 + 3; const ll mod = (ll) 1e9 + 7; ll sq(ll x) { return x * x; } ll zxc = 1, x, y, a[5][N], sum[5]; void solve() { ll n, ans = 0; cin >> n; for(ll i = 1; i <= 2 * n; i++) { cin >> y >> x; if(1 <= x && x <= 2 && 1 <= y && y <= n) a[x][y]++; else if(x < 1 && y < 1) { a[1][1]++; ans += abs(x - 1), ans += abs(y - 1); } else if(x < 1 && y > n) { a[1][n]++; ans += abs(x - 1), ans += abs(y - n); } else if(y < 1 && x > 2) { a[2][1]++; ans += abs(x - 2), ans += abs(y - 1); } else if(x > 2 && y > n) { a[2][n]++; ans += abs(x - 2), ans += abs(y - n); } else if(1 <= x && x <= 2 && y < 1) a[x][1]++, ans += abs(y - 1); else if(1 <= x && x <= 2 && y > n) a[x][n]++, ans += abs(y - n); else if(1 <= y && y <= n && x < 1) a[1][y]++, ans += abs(x - 1); else if(1 <= y && y <= n && x > 2) a[2][y]++, ans += abs(x - 2); } // cout << ans << "\n"; // // for(ll i = 1; i <= 2; i++) { // for(ll j = 1; j <= n; j++) { // cout << a[i][j] << " "; // } // cout << "\n"; // } for(ll i = 1; i <= n; i++) { sum[1] += a[1][i] - 1; sum[2] += a[2][i] - 1; ll x = min(abs(sum[1]), abs(sum[2])); if(sum[1] > 0 && sum[2] < 0) sum[1] -= x, sum[2] += x, ans += x; if(sum[2] > 0 && sum[1] < 0) sum[2] -= x, sum[1] += x, ans += x; ans += abs(sum[1]) + abs(sum[2]); } cout << ans; } int main(/*Уверенно*/) { ios_base::sync_with_stdio(0); cin.tie(0); /* freopen(".in", "r", stdin); freopen(".out", "w", stdout); */ // cin >> zxc; while(zxc--) { solve(); } return 0; } // さよならさ いかなくちゃ
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...