#include <bits/stdc++.h>
#include "dango3.h"
using namespace std;
#define name "aaaaaa"
#define fi first
#define se second
using ll = long long;
using db = double;
using ld = long double;
using pii = pair<int, int>;
using pll = pair<ll, ll>;
using ppii = pair<int, pii>;
const int N = 405, M = 30, K = N * M;
int n, m;
int a[K];
int pos[K];
int ask(vector<int> v){
cout << v.size() << ' ';
for(int i : v){
cout << i << ' ';
}
cout << endl;
int res; cin >> res; return res;
}
bool b[K];
bool ck(int mid, int id){
vector<int> v;
for(int i = 1; i <= n * m; i++){
b[i] = false;
}
b[id] = true;
for(int i = 1; i <= mid; i++){
b[pos[i]] = true;
}
for(int i = 1; i <= n * m; i++){
if(b[i] == false) v.push_back(i);
}
if(Query(v) == m - 2){
return true;
}else{
return false;
}
}
vector<int> gay[K];
void Solve(int n2, int m2){
n = n2, m = m2;
a[1] = 1;
pos[1] = 1;
int dif = 1;
for(int i = 2; i <= n * m; i++){
int l = 1, r = min(n, dif + 1), mid;
while(l < r){
mid = (l + r) / 2;
if(ck(mid, i)){
r = mid;
}else{
l = mid + 1;
}
}
a[i] = l;
pos[l] = i;
if(a[i] > dif){
dif = a[i];
}
}
for(int i = 1; i <= n * m; i++){
gay[a[i]].push_back(i);
}
for(int i = 0; i < m; i++){
vector<int> cur;
for(int j = 1; j <= n; j++){
cur.push_back(gay[j][i]);
Answer(cur);
}
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |