Submission #553705

#TimeUsernameProblemLanguageResultExecution timeMemory
553705amunduzbaevSuper Dango Maker (JOI22_dango3)C++17
22 / 100
534 ms612 KiB
#include "dango3.h" #ifndef EVAL #include "grader.cpp" #endif #include "bits/stdc++.h" using namespace std; void Solve(int n, int m) { vector<int> a(n * m); iota(a.begin(), a.end(), 0); for(int i=m;i>0;i--){ int j=n*i-1; vector<int> tmp; auto ask = [&](int j){ vector<int> tt; for(int i=0;i<=j;i++) tt.push_back(a[i] + 1); for(auto x : tmp) tt.push_back(a[x] + 1); return Query(tt); }; while(~j){ if(ask(j)){ if(!j) { tmp.push_back(j); break; } j = max(j - i, 0); } else { int l = j, r = min(j + i, tmp.empty() ? n * m : tmp.back() - 1); while(l < r){ int m = (l + r) >> 1; if(ask(m)) r = m; else l = m + 1; } assert(l == r); tmp.push_back(l); j = l - 1; } } auto give = [&](vector<int>& tt){ reverse(tt.begin(), tt.end()); /* for(auto x : tt) cout<<x<<" "; cout<<"\n"; for(auto x : a) cout<<x<<" "; cout<<"\n"; */ vector<int> tmp, qq; for(int j=0, l=0;j<n*i;j++){ if(l<n && tt[l] == j) { qq.push_back(a[j] + 1); l++; continue; } tmp.push_back(a[j]); } swap(tmp, a); Answer(qq); assert(qq.size() == n); }; assert(tmp.size() == n); give(tmp); } } /* 3 2 3 3 1 2 1 2 */

Compilation message (stderr)

In file included from /usr/include/c++/10/cassert:44,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:33,
                 from dango3.cpp:5:
dango3.cpp: In lambda function:
dango3.cpp:60:21: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   60 |    assert(qq.size() == n);
      |           ~~~~~~~~~~^~~~
dango3.cpp: In function 'void Solve(int, int)':
dango3.cpp:63:21: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   63 |   assert(tmp.size() == n);
      |          ~~~~~~~~~~~^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...