Submission #1107493

#TimeUsernameProblemLanguageResultExecution timeMemory
1107493SonicMLUnscrambling a Messy Bug (IOI16_messy)C++14
100 / 100
2 ms808 KiB
#include <vector> #include <string> #include "messy.h" using namespace std; //int freqW, freqR; string add; void setAddInterval(int from, int to, char val) { for(int i = from;i <= to;i++) { add[i] = val; } } void build(int from, int to) { if(from == to) { return; }else { int mid = (from + to) / 2; for(int i = from;i <= mid;i++) { add[i] = '1'; //freqW++; //cerr << freqW << '\n'; //cerr << add << '\n'; add_element(add); add[i] = '0'; } setAddInterval(mid+1, to, '1'); build(from, mid); setAddInterval(mid+1, to, '0'); setAddInterval(from, mid, '1'); build(mid+1, to); setAddInterval(from, mid, '0'); } } string ser; int const NMAX = 128; int pos[1 + NMAX]; int perm[1 + NMAX]; bool outside[1 + NMAX]; void search(int from, int to, int n) { if(from == to) { for(int i = 0;i < n;i++) { if(!outside[i]) { pos[from] = i; perm[pos[from]] = from; return; } } }else { int mid = (from + to) / 2; for(int i = 0;i < n;i++) { if(outside[i]) { ser[i] = '1'; }else { ser[i] = '0'; } } vector <int> half1; vector <int> half2; for(int i = 0;i < n;i++) { if(!outside[i]) { ser[i] = '1'; //freqR++; //cerr << freqR << '\n'; if(check_element(ser)) { half1.push_back(i); }else { half2.push_back(i); } ser[i] = '0'; } } for(int i = 0;i < half2.size();i++) { outside[half2[i]] = true; } search(from, mid, n); for(int i = 0;i < half2.size();i++) { outside[half2[i]] = false; } for(int i = 0;i < half1.size();i++) { outside[half1[i]] = true; } search(mid+1, to, n); for(int i = 0;i < half1.size();i++) { outside[half1[i]] = false; } } } vector <int> restore_permutation(int n, int w, int r) { add.resize(n); setAddInterval(0, n-1, '0'); build(0, n-1); compile_set(); ser.resize(n); search(0, n-1, n); vector <int> ans; ans.resize(n); //cerr << n << '\n'; for(int i = 0;i < n;i++) { ans[i] = perm[i]; //cerr << perm[i]; } return ans; }

Compilation message (stderr)

messy.cpp: In function 'void search(int, int, int)':
messy.cpp:83:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   83 |     for(int i = 0;i < half2.size();i++) {
      |                   ~~^~~~~~~~~~~~~~
messy.cpp:87:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   87 |     for(int i = 0;i < half2.size();i++) {
      |                   ~~^~~~~~~~~~~~~~
messy.cpp:91:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   91 |     for(int i = 0;i < half1.size();i++) {
      |                   ~~^~~~~~~~~~~~~~
messy.cpp:95:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   95 |     for(int i = 0;i < half1.size();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...