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 <bits/stdc++.h>
using namespace std;
#define ar array
#define sz(v) int(std::size(v))
using i64 = long long;
using pii = pair<int, int>;
int s(int n) {
return n/40;
}
int calc(int l, int r) {
if (s(r) == s(l-1)) return 1;
if (l == r) return 1;
int m = (l+r)/2;
return 1+calc(l,m)+calc(m+1,r);
}
#ifdef LOCAL
int n, m, a[int(1e4)+1];
int Query(vector<int> v) {
vector<int> c(n);
for (int i : v) c[a[i]-1]++;
// for (int i : v) cout << i << ' ';
// cout << "| GOT " << *min_element(begin(c),end(c)) << endl;
return *min_element(begin(c),end(c));
}
void Answer(vector<int> v) {
for (int x : v) cout << x << ' ';
cout << endl;
}
#else
#include "dango3.h"
#endif
mt19937 rng(1234);
vector<int> operator+(const vector<int> one, vector<int> two) {
for (int x : one) two.push_back(x);
return two;
}
void Solve(int n, int m) {
vector<int> v;
for (int i = 1; i <= n*m; i++) v.push_back(i);
for (int it = 0; it < m; it++) {
for (int i = 0; i < sz(v); i++) swap(v[i], v[rng()%(i+1)]);
int low = n, hi = sz(v);
while (low < hi) {
int mid = (low+hi)/2;
if (Query(vector(begin(v), begin(v)+mid))) hi = mid;
else low = mid+1;
}
vector base(begin(v), begin(v)+low);
vector<int> good, bad;
for (int i = low-1; i >= 0; i--) {
int j = v[i];
if (Query(vector(begin(v), begin(v)+i) + good)) bad.push_back(j);
else good.push_back(j);
}
bad = bad + vector(begin(v)+low, end(v));
assert(sz(good) == n);
Answer(good);
v = bad;
}
}
#ifdef LOCAL
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin >> n >> m;
for (int i = 1; i <= n*m; i++) cin >> a[i];
Solve(n, m);
}
#endif
# | 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... |