제출 #1016056

#제출 시각아이디문제언어결과실행 시간메모리
1016056amine_arouaMagic Show (APIO24_show)C++17
0 / 100
2 ms1076 KiB
#include <bits/stdc++.h> #include "Alice.h" using namespace std; // you may define some global variables, but it does not work if you try to transfer any information from function Alice() to function Bob() through these variables. // you had better not use the same global variables in function Alice() and in function Bob(). const int N = 4976; const int CNT = (N - 1)/25; vector<int> bits[25]; #define myrand( l , r , rng) uniform_int_distribution<int>(l , r)(rng) std::vector<std::pair<int,int>> Alice(){ mt19937 rng1(1313); int node = myrand(1 , N , rng1); vector<int> perm; for(int i = 1 ; i <= N ; i++) { if(i != node) perm.push_back(i); } shuffle(perm.begin() , perm.end() , rng1); for(int i = 0 ; i < 25 ; i++) { for(int j = i * CNT ; j < (i + 1) * CNT ; j++) { bits[i].push_back(perm[j]); } } long long X = setN(N); vector<pair<int ,int>> vp; vector<int> all; for(int i = 0 ; i < 25 ; i++) { if((1<<i) & X) { for(auto j : bits[i]) { vp.push_back({node , j}); all.push_back(j); } } } mt19937 rng2(chrono::steady_clock::now().time_since_epoch().count()); for(int i =0 ; i < 25 ; i++) { if((1<<i) & X) continue; for(auto j : bits[i]) { vp.push_back({all[myrand(0 , (int)all.size() - 1 , rng2)] , j}); } } shuffle(vp.begin() , vp.end() , rng2); assert((int)vp.size() == N - 1); return vp; } //int main() //{ // Alice(); //}
#include <bits/stdc++.h> #include "Bob.h" using namespace std; // you may define some global variables, but it does not work if you try to transfer any information from function Alice() to function Bob() through these variables. // you had better not use the same global variables in function Alice() and in function Bob(). const int N = 4976; const int CNT = (N - 1)/25; int label[N + 1]; #define myrand( l , r , rng) uniform_int_distribution<int>(l , r)(rng) long long Bob(std::vector<std::pair<int,int>> V){ mt19937 rng1(1313); // add your code here int node = myrand(1 , N , rng1); vector<int> perm; for(int i = 1 ; i <= N ; i++) { if(i == node) continue; perm.push_back(i); } shuffle(perm.begin() , perm.end() , rng1); for(int i = 0 ; i < 25 ; i++) { for(int j = i * CNT ; j < (i + 1) * CNT ; j++) { label[perm[j]] = i; } } long long X = 0; for(auto [a , b] : V) { if(a == node) { X|=(1ll<<label[b]); } } return X; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...