Submission #250204

#TimeUsernameProblemLanguageResultExecution timeMemory
250204dwscMinerals (JOI19_minerals)C++14
100 / 100
105 ms4372 KiB
#include "minerals.h" #include <bits/stdc++.h> using namespace std; int n; int in[100010]; void solve(vector<int> v1,vector<int> v2,bool in1){ random_shuffle(v1.begin(),v1.end()); random_shuffle(v2.begin(),v2.end()); if (v1.size() == 1){ Answer(v1[0],v2[0]); return; } int stop = max((int)(v1.size()*0.382),1); vector<int> v1a,v1b,v2a,v2b; int num; for (int i = 0; i < v1.size(); i++){ if (i < stop){ num = Query(v1[i]); //if (in[v1[i]]) cout << "Added" << " " << v1[i] << "\n"; //else cout << "Removed" << " " << v1[i] << "\n"; v1a.push_back(v1[i]); } else{ v1b.push_back(v1[i]); } } for (int i = 0; i < v2.size(); i++){ if (v2a.size() == stop){ v2b.push_back(v2[i]); continue; } if (v2b.size() == v2.size()-stop){ v2a.push_back(v2[i]); continue; } int temp = Query(v2[i]); if (in1 && in[v2[i]]){ if (temp < num) v2a.push_back(v2[i]); else v2b.push_back(v2[i]); } else if (in1 && !in[v2[i]]){ if (temp > num) v2a.push_back(v2[i]); else v2b.push_back(v2[i]); } else if (!in1 && in[v2[i]]){ if (temp == num) v2a.push_back(v2[i]); else v2b.push_back(v2[i]); } else{ if (temp == num) v2a.push_back(v2[i]); else v2b.push_back(v2[i]); } in[v2[i]] = 1-in[v2[i]]; num = temp; } solve(v1a,v2a,!in1); solve(v1b,v2b,in1); } void Solve(int N) { srand(3082); n = N; vector<int> v1,v2; int num = 0; for (int i = 1; i <= 2*N; i++){ if (v1.size() == N){ v2.push_back(i); continue; } int temp = Query(i); in[i] = 1; if (temp > num){ num++; v1.push_back(i); } else{ v2.push_back(i); } } solve(v1,v2,1); }

Compilation message (stderr)

minerals.cpp: In function 'void solve(std::vector<int>, std::vector<int>, bool)':
minerals.cpp:16:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (int i = 0; i < v1.size(); i++){
                     ~~^~~~~~~~~~~
minerals.cpp:27:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (int i = 0; i < v2.size(); i++){
                     ~~^~~~~~~~~~~
minerals.cpp:28:24: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         if (v2a.size() == stop){
             ~~~~~~~~~~~^~~~~~~
minerals.cpp: In function 'void Solve(int)':
minerals.cpp:65:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         if (v1.size() == N){
             ~~~~~~~~~~^~~~
minerals.cpp: In function 'void solve(std::vector<int>, std::vector<int>, bool)':
minerals.cpp:38:13: warning: 'num' may be used uninitialized in this function [-Wmaybe-uninitialized]
             if (temp < num) v2a.push_back(v2[i]);
             ^~
#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...