Submission #813121

#TimeUsernameProblemLanguageResultExecution timeMemory
813121Theo830Flight to the Ford (BOI22_communication)C++17
74 / 100
2731 ms2148 KiB
#include"communication.h" #include <bits/stdc++.h> using namespace std; vector<vector<pair<int,int> > >adj; vector<int>arr; void encode(int n, int x){ vector<int>arr; set<int>pos; for(int j = 0;j < 30;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){ arr[idx] = cur; for(auto x:adj[idx]){ dfs(x.first,cur ^ x.second); } } pair<int, int> decode(int n){ int A = 0,B = 0; adj.assign(35,vector<pair<int,int> >()); set<int>pos; for(int j = 0;j < 30;j++){ pos.insert(j); } arr.assign(30,0); 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; dfs(j,b); pos.erase(j); } else if(a == d){ arr[i] = a; dfs(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); for(int j = 0;j < 30;j++){ if(arr[j]){ A += (1<<j); } } dfs(i,1); for(int j = 0;j < 30;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:23:13: warning: unused variable 'a' [-Wunused-variable]
   23 |         int a = send(arr[i]);
      |             ^
communication.cpp:26:13: warning: unused variable 'd' [-Wunused-variable]
   26 |         int d = send(arr[i]);
      |             ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...