Submission #1313996

#TimeUsernameProblemLanguageResultExecution timeMemory
1313996thieunguyenhuyFlight to the Ford (BOI22_communication)C++20
15 / 100
14 ms2876 KiB
#ifndef hwe #include "communication.h" #endif #include <bits/stdc++.h> using namespace std; #define POPCOUNT(n) (__builtin_popcountll((n))) #define CLZ(n) (__builtin_clzll((n))) #define CTZ(n) (__builtin_ctzll((n))) #define LOG(n) (63 - __builtin_clzll((n))) #define BIT(n, i) (((n) >> (i)) & 1ll) #define MASK(i) (1ll << (i)) #define FLIP(n, i) ((n) ^ (1ll << (i))) #define ON(n, i) ((n) | MASK(i)) #define OFF(n, i) ((n) & ~MASK(i)) #define Int __int128 #define fi first #define se second typedef long long ll; typedef unsigned long long ull; typedef long double ld; typedef pair<int, int> pii; typedef pair<long long, long long> pll; typedef pair<long long, int> pli; typedef pair<int, long long> pil; typedef vector<pair<int, int>> vii; typedef vector<pair<long long, long long>> vll; typedef vector<pair<long long, int>> vli; typedef vector<pair<int, long long>> vil; template <class T1, class T2> bool maximize(T1 &x, T2 y) { if (x < y) { x = y; return true; } return false; } template <class T1, class T2> bool minimize(T1 &x, T2 y) { if (x > y) { x = y; return true; } return false; } template <class T> void remove_duplicate(vector<T> &ve) { sort (ve.begin(), ve.end()); ve.resize(unique(ve.begin(), ve.end()) - ve.begin()); } mt19937_64 rng(chrono::high_resolution_clock::now().time_since_epoch().count()); long long random(long long l, long long r) { return uniform_int_distribution<long long>(l, r)(rng); } template <class T> T random(T r) { return rng() % r; } const int N = 1e6 + 5; const int MOD = 1e9 + 7; const int inf = 1e9; const long long INF = 1e18; #ifdef hwe queue<int> buffer; int flipped = false; int send(int s) { if (flipped) flipped = false; else if (random(2)) flipped = true, s = !s; cerr << "send " << s << '\n'; buffer.emplace(s); return s; } int receive() { assert(!buffer.empty()); int s = buffer.front(); buffer.pop(); return s; } #endif void encode(int n, int X) { send(X == 1); send(X == 2); send(X == 2); send(X == 1); } pii decode(int n) { int a = receive(); int b = receive(); int c = receive(); int d = receive(); if (b == c) { if (b == 1) return make_pair(2, 2); return make_pair(1, 3); } if (a == d) { if (a == 1) return make_pair(1, 1); return make_pair(2, 3); } // 0011 -> 1, 2 // 1010 -> 3 // 0101 -> 3 // 1100 -> 1, 2 if (a == b) return make_pair(1, 2); return make_pair(3, 3); } #ifdef hwe signed main() { encode(3, 3); pii ans = decode(3); cerr << ans.fi << ' ' << ans.se << '\n'; return 0; } #endif
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...