Submission #1205616

#TimeUsernameProblemLanguageResultExecution timeMemory
1205616countlessThe Collection Game (BOI21_swaps)C++20
21 / 100
20 ms424 KiB
// // --- Sample implementation for the task swaps --- // // To compile this program with the sample grader, place: // swaps.h swaps_sample.cpp sample_grader.cpp // in a single folder and run: // g++ swaps_sample.cpp sample_grader.cpp // in this folder. // #include "swaps.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef long double ld; const ll MOD = 998244353; const ll INF = 1e18; const ld EPS = 1e-12; #define endl "\n" #define sp <<" "<< #define REP(i, a, b) for(ll i = a; i < b; i++) #define dbg(x) cout << #x << " = " << x << endl #define mp make_pair #define pb push_back #define fi first #define se second #define fast_io() ios_base::sync_with_stdio(false); cin.tie(NULL) #define all(x) (x).begin(), (x).end() #define rall(x) (x).rbegin(), (x).rend() #define sz(x) ((ll)(x).size()) struct custom_hash { static uint64_t splitmix64(uint64_t x) { // http://xorshift.di.unimi.it/splitmix64.c x += 0x9e3779b97f4a7c15; x = (x ^ (x >> 30)) * 0xbf58476d1ce4e5b9; x = (x ^ (x >> 27)) * 0x94d049bb133111eb; return x ^ (x >> 31); } size_t operator()(uint64_t x) const { static const uint64_t FIXED_RANDOM = chrono::steady_clock::now().time_since_epoch().count(); return splitmix64(x + FIXED_RANDOM); } }; template <typename Key, typename Value> using hash_map = unordered_map<Key, Value, custom_hash>; mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); // uniform_int_distribution<int>(a, b)(rng); // shuffle(all(a), rng); void solve(int n, int v) { // st 1-2 // int m = n; // vector<pair<int, int>> cnt(n+1); // REP(i, 1, n+1) { // cnt[i] = {0, i}; // } // vector<int> a(n), ans(n); // iota(all(a), 1); // if (n % 2) a.push_back(n+1), m++; // auto steal = [&](vector<pair<int, int>> &queries) -> void { // for (auto &[a, b] : queries) { // schedule(a, b); // } // vector<int> res = visit(); // REP(i, 0, queries.size()) { // if (res[i] == 1) { // cnt[queries[i].first].first++; // } else { // cnt[queries[i].second].first++; // } // } // }; // REP(i, 0, m - 1) { // vector<pair<int, int>> queries; // REP(j, 0, m / 2) { // int p1 = a[j], p2 = a[m - j - 1]; // if (p1 != n+1 and p2 != n+1) { // queries.push_back({p1, p2}); // } // } // steal(queries); // vector<int> b(m); // b[0] = a[0], b[1] = a[m-1]; // REP(i, 2, m) { // b[i] = a[i-1]; // } // a.swap(b); // } // sort(all(cnt)); // REP(i, 1, n+1) { // ans[i-1] = cnt[i].second; // } // reverse(all(ans)); // answer(ans); // st 3-5 int m = n; vector<int> a(n), ans(n); iota(all(a), 1); if (n % 2) a.push_back(n+1), m++; auto left = [&]() -> void { for (int i = 1; i < n; i+=2) { schedule(i, i+1); } visit(); }; auto right = [&]() -> void { for (int i = 2; i < n; i+=2) { schedule(i, i+1); } visit(); }; REP(i, 0, n) { if (i % 2 == 0) { left(); } else { right(); } } iota(all(ans), 1); answer(ans); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...