# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
553708 | 2022-04-26T16:25:24 Z | amunduzbaev | Super Dango Maker (JOI22_dango3) | C++17 | 32 ms | 916 KB |
#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 cnt = 0; 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); cnt++; 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 = max(l - i, 0); } } assert(cnt <= n * ceil(log(i)) + 2 * n); 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
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Runtime error | 1 ms | 468 KB | Execution killed with signal 6 |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Runtime error | 5 ms | 500 KB | Execution killed with signal 6 |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Runtime error | 9 ms | 700 KB | Execution killed with signal 6 |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Runtime error | 32 ms | 916 KB | Execution killed with signal 6 |
2 | Halted | 0 ms | 0 KB | - |