Submission #909827

#TimeUsernameProblemLanguageResultExecution timeMemory
909827guechotjrhhMinerals (JOI19_minerals)C++14
40 / 100
19 ms2696 KiB
#include "minerals.h" #include<vector> #include<set> using namespace std; int n, s; void solve0(vector<int>& in, vector<int>& rest); void solve(vector<int>& in, vector<int>& rest) { if (in.size() == 1) { Query(in[0]); Answer(in[0], rest[0]); return; } //better cut - not 1/2 vector<int> in1, in2; for (int i = 0; i < in.size() / 2; i++) in1.push_back(in[i]); for (int i = in.size() / 2; i < in.size(); i++) in2.push_back(in[i]); //get rest for in1. possible better - not to take out right away int sz = 0; for (int i : in2) sz = Query(i); vector<int> rest1, rest2; for (int j : rest) { int u = Query(j); if (u == sz) rest1.push_back(j); else { rest2.push_back(j); sz = u; //Query(j); } } solve0(in1, rest1); for (int i : in2) Query(i); solve0(in2, rest2); } void solve0(vector<int>& in, vector<int>& rest) {// rest are also in if (in.size() == 1) { Query(in[0]); Query(rest[0]); Answer(in[0], rest[0]); return; } //better cut - not 1/2 vector<int> in1, in2; for (int i = 0; i < in.size() / 2; i++) in1.push_back(in[i]); for (int i = in.size() / 2; i < in.size(); i++) in2.push_back(in[i]); //get rest for in1. possible better - not to take out right away int sz = 0; for (int i : in2) sz = Query(i); vector<int> rest1, rest2; for (int j : rest) { int u = Query(j); //Query(j); if (u == sz) rest1.push_back(j); else { sz = u; rest2.push_back(j); } } solve(in1, rest1); for (int i : in2) Query(i); solve(in2, rest2); } void Solve(int N) { n = N; s = n << 1; int sz = 0; vector<int> in, rest; for (int i = 1; i <= s; i++) { int u = Query(i); if (u > sz) { sz = u; in.push_back(i); } else { rest.push_back(i); } } solve0(in, rest); }

Compilation message (stderr)

minerals.cpp: In function 'void solve(std::vector<int>&, std::vector<int>&)':
minerals.cpp:13:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   13 |     for (int i = 0; i < in.size() / 2; i++) in1.push_back(in[i]);
      |                     ~~^~~~~~~~~~~~~~~
minerals.cpp:14:35: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   14 |     for (int i = in.size() / 2; i < in.size(); i++) in2.push_back(in[i]);
      |                                 ~~^~~~~~~~~~~
minerals.cpp: In function 'void solve0(std::vector<int>&, std::vector<int>&)':
minerals.cpp:39:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   39 |     for (int i = 0; i < in.size() / 2; i++) in1.push_back(in[i]);
      |                     ~~^~~~~~~~~~~~~~~
minerals.cpp:40:35: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   40 |     for (int i = in.size() / 2; i < in.size(); i++) in2.push_back(in[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...