Submission #988165

#TimeUsernameProblemLanguageResultExecution timeMemory
988165khanhphucscratchSuper Dango Maker (JOI22_dango3)C++17
100 / 100
2043 ms848 KiB
#include<bits/stdc++.h> #include "dango3.h" using namespace std; /*int Query(vector<int> &x) { cout<<"? "; for(int i : x) cout<<i<<" "; cout<<endl; int a; cin>>a; return a; } void Answer(vector<int> &a) { cout<<"! "; for(int i : a) cout<<i<<" "; cout<<endl; }*/ void Solve(int n, int m) { //n: number of color bool f[n*m+1]; memset(f, 0, sizeof(f)); vector<vector<int>> wtf; for(int i = 1; i < n*m; i++){ int l = 0, r = wtf.size()-1, ans = -1; while(l <= r){ int mid = (l+r+2)/2-1; vector<int> question; for(int j = 0; j <= mid; j++){ for(int k : wtf[j]) f[k] = 1; } f[i] = 1; for(int j = 1; j <= n*m; j++) if(f[j] == 0) question.push_back(j); for(int j = 0; j <= mid; j++){ for(int k : wtf[j]) f[k] = 0; } f[i] = 0; int sus = Query(question); if(sus == m-mid-1){ans = mid; r = mid-1;} else l = mid+1; } if(ans == -1){ wtf.push_back({i}); //cout<<i<<" "<<wtf.size()<<endl; } else{ wtf[ans].push_back(i); //cout<<i<<" "<<ans+1<<endl; } } for(int i = 0; i < m; i++) if(wtf[i].size() < n) wtf[i].push_back(n*m); for(vector<int> i : wtf) Answer(i); } /*int main() { Solve(3, 2); }*/

Compilation message (stderr)

dango3.cpp: In function 'void Solve(int, int)':
dango3.cpp:49:49: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   49 |     for(int i = 0; i < m; i++) if(wtf[i].size() < n) wtf[i].push_back(n*m);
      |                                   ~~~~~~~~~~~~~~^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...