Submission #821694

#TimeUsernameProblemLanguageResultExecution timeMemory
821694PixelCatCoin Collecting (JOI19_ho_t4)C++17
100 / 100
49 ms5844 KiB
/* code by PixelCat */ /* meow owo */ #include <bits/stdc++.h> #define int LL //__int128 #define double long double using namespace std; using LL = long long; // using i128 = __int128_t; using ull = unsigned long long; using pii = pair<int, int>; #define For(i, a, b) for (int i = a; i <= b; i++) #define Fors(i, a, b, s) for (int i = a; i <= b; i += s) #define Forr(i, a, b) for (int i = a; i >= b; i--) #define F first #define S second #define eb emplace_back #define all(x) x.begin(), x.end() #define sz(x) ((int)x.size()) #define mkp make_pair #define MOD (int)(998244353) // #define MOD (int)((LL)1'000'000'007) #define EPS (1e-6) namespace { #ifdef NYAOWO #include "./library/debug.hpp" inline void USACO(const string &s) { cerr << "USACO: " << s << "\n"; } #else #define debug(...) inline void timer() {} inline void USACO(const string &s) { freopen((s + ".in").c_str(), "r", stdin); freopen((s + ".out").c_str(), "w", stdout); } #endif inline void NYA() { ios::sync_with_stdio(false); cin.tie(0); } inline int gcd(int a, int b) { return __gcd(a, b); } inline int lcm(int a, int b) { return a / gcd(a, b) * b; } inline int fpow(int b, int p, const int &mod = MOD) { if(p < 0) return fpow(fpow(b, -p, mod), mod - 2, mod); b %= mod; int ans = 1; for (; p; p >>= 1, b = b * b % mod) if (p & 1) ans = ans * b % mod; return ans; } template <typename T> inline void chmin(T &_a, const T &_b) { if (_b < _a) _a = _b; } template <typename T> inline void chmax(T &_a, const T &_b) { if (_a < _b) _a = _b; } mt19937_64 rng( chrono::steady_clock::now().time_since_epoch().count()); } // namespace const int MAXN = 100'000; int cnt[MAXN + 10][3]; int32_t main() { NYA(); // nyaacho >/////< int n; cin >> n; int ans = 0; For(i, 1, n * 2) { int x, y; cin >> x >> y; if(x < 1) { ans += 1 - x; x = 1; } if(x > n) { ans += x - n; x = n; } if(y < 1) { ans += 1 - y; y = 1; } if(y > 2) { ans += y - 2; y = 2; } cnt[x][y]++; } int c1 = 0, c2 = 0; For(x, 1, n) { c1 += cnt[x][1] - 1; c2 += cnt[x][2] - 1; if(c1 > 0 && c2 < 0) { int k = min(c1, -c2); ans += k; c1 -= k; c2 += k; } if(c1 < 0 && c2 > 0) { int k = min(-c1, c2); ans += k; c1 += k; c2 -= k; } ans += abs(c1) + abs(c2); } cout << ans << "\n"; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...