Submission #1205614

#TimeUsernameProblemLanguageResultExecution timeMemory
1205614countlessThe Collection Game (BOI21_swaps)C++20
0 / 100
0 ms412 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) { 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); } // st 1-2 // sort(all(cnt)); // REP(i, 1, n+1) { // ans[i-1] = cnt[i].second; // } // reverse(all(ans)); // answer(ans); // st 3-5 iota(all(ans), 1); reverse(all(ans)); 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...