Submission #100671

#TimeUsernameProblemLanguageResultExecution timeMemory
100671Pro_ktmrMemory 2 (JOI16_memory2)C++14
60 / 100
3 ms384 KiB
#include<bits/stdc++.h> #include"Memory2_lib.h" using namespace std; #define LL long long #define MP(a,b) make_pair(a,b) /* int Flip(int I, int J){ cout << I << " " << J << endl; int tmp; cin >> tmp; return tmp; } void Answer(int I, int J, int X){ cout << I << " " << J << " " << X << endl; }*/ //all 0-indexed //Flip(int I, int J) //Answer(int I, int J, int X) void Solve(int T, int N){ N *= 2; int ans[100]; vector<int> yet[2]; for(int i=0; i<N; i++) yet[1].push_back(i); random_device seed; mt19937 engine(seed()); while(yet[1].size() > 3){ yet[0].clear(); yet[0] = yet[1]; yet[1].clear(); shuffle(yet[0].begin(), yet[0].end(), engine); vector<int> tmp; for(int i=0; i<yet[0].size(); i++){ tmp.push_back(yet[0][i]); if(tmp.size() == 4){ //cout << tmp[0] << " " << tmp[1] << " " << tmp[2] << " " << tmp[3] << endl; vector<int> f[4]; int x = Flip(tmp[0],tmp[1]); f[0].push_back(x); f[1].push_back(x); x = Flip(tmp[0],tmp[2]); f[0].push_back(x); f[2].push_back(x); x = Flip(tmp[0],tmp[3]); f[0].push_back(x); f[3].push_back(x); x = Flip(tmp[1],tmp[2]); f[1].push_back(x); f[2].push_back(x); x = Flip(tmp[1],tmp[3]); f[1].push_back(x); f[3].push_back(x); x = Flip(tmp[2],tmp[3]); f[2].push_back(x); f[3].push_back(x); sort(f[0].begin(), f[0].end()); sort(f[1].begin(), f[1].end()); sort(f[2].begin(), f[2].end()); sort(f[3].begin(), f[3].end()); bool already[4] = {}; int c = 0; int d = 0; for(int j=0; j<4; j++){ if(f[j][0] == f[j][1] && f[j][1] == f[j][2]){ ans[tmp[j]] = f[j][0]; already[j] = true; c++; } else if(f[j][0] == f[j][1] || f[j][1] == f[j][2] || f[j][2] == f[j][0]){ d++; } } if(c == 1 && d == 1){ for(int j=0; j<4; j++){ if(f[j][0] == f[j][1] && f[j][1] == f[j][2]){ } else if(f[j][0] == f[j][1] || f[j][1] == f[j][2]){ ans[tmp[j]] = f[j][1]; already[j] = true; } else if(f[j][2] == f[j][0]){ ans[tmp[j]] = f[j][2]; already[j] = true; } } } for(int j=0; j<4; j++){ if(!already[j]) yet[1].push_back(tmp[j]); } //cout << already[0] << " " << already[1] << " " << already[2] << " " << already[3] << endl; tmp.clear(); } } for(int i=0; i<tmp.size(); i++){ yet[1].push_back(tmp[i]); } } yet[0].clear(); yet[0] = yet[1]; yet[1].clear(); sort(yet[0].begin(), yet[0].end()); if(yet[0].size() == 3){ vector<int> f[3]; int x = Flip(yet[0][0],yet[0][1]); f[0].push_back(x); f[1].push_back(x); x = Flip(yet[0][0],yet[0][2]); f[0].push_back(x); f[2].push_back(x); x = Flip(yet[0][1],yet[0][2]); f[1].push_back(x); f[2].push_back(x); sort(f[0].begin(), f[0].end()); sort(f[1].begin(), f[1].end()); sort(f[2].begin(), f[2].end()); for(int j=0; j<3; j++){ if(f[j][0] == f[j][1]){ ans[yet[0][j]] = f[j][0]; yet[0].erase(yet[0].begin()+j); break; } } } for(int i=0; i<N/2; i++){ vector<int> tmp; for(int j=0; j<N; j++){ if(yet[0][0] != j && yet[0][1] != j && ans[j] == i) tmp.push_back(j); } if(tmp.size() == 2) Answer(tmp[0], tmp[1], i); else Answer(yet[0][0], yet[0][1], i); } } /* int main(){ Solve(0,3); return 0; }*/

Compilation message (stderr)

memory2.cpp: In function 'void Solve(int, int)':
memory2.cpp:36:17: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(int i=0; i<yet[0].size(); i++){
                ~^~~~~~~~~~~~~~
memory2.cpp:104:17: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(int i=0; i<tmp.size(); i++){
                ~^~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...