Submission #1170059

#TimeUsernameProblemLanguageResultExecution timeMemory
1170059niepamietamhaslaMinerals (JOI19_minerals)C++20
80 / 100
24 ms3536 KiB
#include <bits/stdc++.h> using namespace std; #include "minerals.h" void rozw(vector<int> lewo, vector<int> prawo, bool c){ if(lewo.size() == 0 and prawo.size() == 0) return; if(lewo.size() == 1 and prawo.size() == 1) { Answer(lewo[0], prawo[0]); return; } int mid = lewo.size() / 2; // for(auto u : lewo){ // cerr << u << " "; // } // cout << " lew\n"; // for(auto u : prawo){ // cerr << u << " "; // } // cout << " praw\n"; vector<int> l1; vector<int> l2; vector<int> p1; vector<int> p2; int poprz = -1; for(int i = 0; i < mid; ++i){ poprz = Query(lewo[i]); l1.push_back(lewo[i]); } for(int i = mid; i < lewo.size(); ++i){ l2.push_back(lewo[i]); } for(int i = 0; i < prawo.size(); ++i){ int nowy = Query(prawo[i]); if(c){ if(nowy == poprz){ p2.push_back(prawo[i]); } else{ p1.push_back(prawo[i]); } } else{ if(nowy == poprz){ p1.push_back(prawo[i]); } else{ p2.push_back(prawo[i]); } } poprz = nowy; } rozw(l1, p1, c ^ 1); rozw(l2, p2, c); } void Solve(int N){ vector<int> lewo; vector<int> prawo; int prev = 0; for(int i = 1; i <= 2 * N; ++i){ int ile = Query(i); if(ile != prev){ lewo.push_back(i); } else{ prawo.push_back(i); } prev = ile; } rozw(lewo, prawo, 1); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...