Submission #58719

#TimeUsernameProblemLanguageResultExecution timeMemory
58719ksun48Library (JOI18_library)C++14
19 / 100
704 ms952 KiB
#include "library.h" #include <bits/stdc++.h> using namespace std; int check(int n, int a, int b){ vector<int> ask(n, 0); ask[a] = ask[b] = 1; if(Query(ask) == 1){ return 1; } return 0; } void Solve(int N) { int n = N; vector<vector<int> > groups; for(int i = 0; i < n; i++){ groups.push_back({i}); } while(groups.size() > 1){ vector<int> inside(groups.size(), 1); int n1 = groups.size(); while(n1 > 2){ vector<int> newinside(groups.size()); vector<int> ask(n, 0); int newn1 = 0; for(int i = 0; i < groups.size(); i++){ if(inside[i]){ newinside[i] = (rand() % 4 == 0); if(newinside[i]){ newn1++; } } } if(newn1 <= 1) continue; for(int i = 0; i < groups.size(); i++){ if(newinside[i]){ for(int a : groups[i]){ ask[a] = 1; } } } int b = Query(ask); assert(b <= newn1); if(b < newn1){ n1 = newn1; inside = newinside; } } vector<vector<int> > newgroups; vector<vector<int> > good; for(int i = 0; i < groups.size(); i++){ if(!inside[i]){ newgroups.push_back(groups[i]); } else { good.push_back(groups[i]); } } vector<int> ans; if(check(n, good[0][0], good[1][0])){ reverse(good[0].begin(), good[0].end()); } else if(check(n, good[0][good[0].size() - 1], good[1][0])){ } else if(check(n, good[0][0], good[1][good[1].size()-1])){ reverse(good[0].begin(), good[0].end()); reverse(good[1].begin(), good[1].end()); } else if(check(n, good[0][good[0].size() - 1], good[1][good[1].size() - 1])){ reverse(good[1].begin(), good[1].end()); } else { assert(0); } ans.insert(ans.end(), good[0].begin(), good[0].end()); ans.insert(ans.end(), good[1].begin(), good[1].end()); newgroups.push_back(ans); groups = newgroups; } vector<int> ans = groups[0]; for(int j = 0; j < ans.size(); j++){ ans[j]++; //cout << ans[j] << " "; } //cout << endl; Answer(ans); }

Compilation message (stderr)

library.cpp: In function 'void Solve(int)':
library.cpp:27:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
    for(int i = 0; i < groups.size(); i++){
                   ~~^~~~~~~~~~~~~~~
library.cpp:36:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
    for(int i = 0; i < groups.size(); i++){
                   ~~^~~~~~~~~~~~~~~
library.cpp:52:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(int i = 0; i < groups.size(); i++){
                  ~~^~~~~~~~~~~~~~~
library.cpp:77:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int j = 0; j < ans.size(); j++){
                 ~~^~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...