# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1029679 | Otalp | Super Dango Maker (JOI22_dango3) | C++17 | 5255 ms | 1752 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "dango3.h"
#include<bits/stdc++.h>
using namespace std;
#define pb push_back
namespace {
int variable_example = 1;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
int gen(int i){return rng()%i;}
} // namespace
void Solve(int N, int M) {
int n = N, m = M;
map<int, int> us, ddus;
vector<int> rs;
for(int i=1; i<=n*m; i++){
rs.pb(i);
}
random_shuffle(rs.begin(), rs.end(), gen);
double D=0;
for(int i=1; i<=m; i++){
vector<int> d;
for(int j: rs){
if(us[j]) continue;
d.pb(j);
if(ddus[j]) continue;
if(d.size() >= n){
int g = Query(d);
if(g) break;
}
}
map<int, int> dus;
int cnt = 0;
D += d.size();
//random_shuffle(d.begin(), d.end(), gen);
int b=4;
for(int i=0; i<d.size(); i+=b){
vector<int> f;
for(int j=i; j<i+b and j < d.size(); j++){
dus[d[j]] = 1;
}
for(int y: d){
if(dus[y]) continue;
f.pb(y);
}
int g = Query(f);
if(!g){
for(int j=i; j<i+b and j < d.size(); j++){
dus[d[j]] = 0;
}
for(int j=i; j<i+b and j < d.size(); j++){
dus[d[j]] = 1;
f.clear();
for(int y: d){
if(dus[y]) continue;
f.pb(y);
}
int g = Query(f);
if(!g){
us[d[j]] = 1;
dus[d[j]] = 0;
cnt++;
if(cnt == n) break;
}
}
}
}
vector<int> f;
for(int x: d){
if(us[x]) f.pb(x);
else ddus[x] = 1;
}
//for(int x: f) cout<<x<<' ';
//cout<<'\n';
Answer(f);
}
}
Compilation message (stderr)
# | 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... |