# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
553700 | 2022-04-26T16:14:46 Z | amunduzbaev | Super Dango Maker (JOI22_dango3) | C++17 | 35 ms | 548 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 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 >= 0){ if(ask(j)){ if(!j) { tmp.push_back(j); break; } j = max(j - i, 0); } else { int l = j, r = j + i; while(l < r){ int m = (l + r) >> 1; if(ask(m)) r = m; else l = m + 1; } 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
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 340 KB | Output is correct |
2 | Incorrect | 1 ms | 300 KB | Wrong Answer [2] |
3 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 2 ms | 300 KB | Wrong Answer [2] |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 10 ms | 468 KB | Wrong Answer [2] |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 35 ms | 548 KB | Wrong Answer [2] |
2 | Halted | 0 ms | 0 KB | - |