Submission #1175907

#TimeUsernameProblemLanguageResultExecution timeMemory
1175907thelegendary08Super Dango Maker (JOI22_dango3)C++17
100 / 100
1316 ms936 KiB
#include "dango3.h" #include<bits/stdc++.h> #define pb push_back #define vi vector<int> #define vout(v) for(auto u : v)cout<<u<<' '; cout<<'\n'; #define f0r(i,n) for(int i = 0; i<n; i++) using namespace std; vi perm; int ask(vi quer){ vi q; // cout<<"QUER "<<' '; for(auto u : quer){ q.pb(perm[u]); // cout<<u<<' '; } // cout<<'\n'; int x = Query(q); return x; } void ans(vi a){ vi ret; for(auto u : a){ ret.pb(perm[u]); } Answer(ret); } void Solve(int N, int M) { f0r(i, N*M){ perm.pb(i + 1); } random_shuffle(perm.begin(), perm.end()); // for(auto u : perm)cout<<u<<' '; // cout<<'\n'; vector<vi> answers(M); vi unanswer; f0r(i, N*M)unanswer.pb(i); f0r(i, N * M){ unanswer.erase(find(unanswer.begin(), unanswer.end(), i)); int lo = 0; int hi = M - 1; while(lo < hi){ // cout<<lo<<' '<<hi<<'\n'; int mid = lo + (hi - lo + 1) / 2; vi quer; for(auto u : unanswer)quer.pb(u); f0r(j, mid){ for(auto u : answers[j])quer.pb(u); } int x = ask(quer); if(x == M - 1 - (M - (mid))){ hi = mid - 1; } else{ lo = mid; } } answers[lo].pb(i); } for(auto u : answers)ans(u); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...