Submission #813116

#TimeUsernameProblemLanguageResultExecution timeMemory
813116Theo830Flight to the Ford (BOI22_communication)C++17
0 / 100
302 ms200 KiB
#include"communication.h" #include <bits/stdc++.h> using namespace std; const int bits = 30; void encode(int n, int x){ vector<int>arr; set<int>pos; for(int j = 0;j < bits;j++){ pos.insert(j); if(x & (1<<j)){ arr.push_back(1); } else{ arr.push_back(0); } } while(pos.size() > 1){ auto it = pos.begin(); auto it2 = pos.begin(); it2++; int i = (*it),j = (*it2); int a = send(arr[i]); int b = send(arr[j]); int c = send(arr[j]); int d = send(arr[i]); if(b == c){ pos.erase(j); } else{ pos.erase(i); } } } void dfs(int idx,int cur,vector<int>&arr,vector<vector<pair<int,int> > >&adj){ arr[idx] = cur; for(auto x:adj[idx]){ dfs(x.first,cur ^ x.second,arr,adj); } } pair<int, int> decode(int n){ int A = 0,B = 0; vector<vector<pair<int,int> > >adj; vector<int>arr; adj.assign(bits+5,vector<pair<int,int> >()); set<int>pos; for(int j = 0;j < bits;j++){ pos.insert(j); } arr.assign(bits,-1); while(pos.size() > 1){ auto it = pos.begin(); auto it2 = pos.begin(); it2++; int i = (*it),j = (*it2); int a = receive(); int b = receive(); int c = receive(); int d = receive(); if(b == c){ arr[j] = b; pos.erase(j); } else if(a == d){ arr[i] = a; pos.erase(i); } else{ adj[j].push_back({i,a ^ c}); pos.erase(i); } } auto it = pos.begin(); int i = (*it); dfs(i,0,arr,adj); for(int j = 0;j < bits;j++){ if(arr[j]){ A += (1<<j); } } dfs(i,1,arr,adj); for(int j = 0;j < bits;j++){ if(arr[j]){ B += (1<<j); } } A = max(1,A); B = max(1,B); B = min(n,B); A = min(n,A); return {A,B}; }

Compilation message (stderr)

communication.cpp: In function 'void encode(int, int)':
communication.cpp:22:13: warning: unused variable 'a' [-Wunused-variable]
   22 |         int a = send(arr[i]);
      |             ^
communication.cpp:25:13: warning: unused variable 'd' [-Wunused-variable]
   25 |         int d = send(arr[i]);
      |             ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...