Files
BMSSP/generator/gen1.cpp
2025-10-30 20:30:31 +09:00

51 lines
1.0 KiB
C++

#include "testlib.h"
#include <unordered_map>
#include <vector>
using namespace std;
using ll = unsigned long long;
using pll = pair<ll, ll>;
const double eps = 1e-3;
int main(int argc, char *argv[]) {
registerGen(argc, argv, 1);
ll n = opt<ll>("N");
ll m = opt<ll>("M");
println(n, m);
vector<ll> cnt(n + 1, 0);
for (ll i = 0; i < m; ++i) {
ll s = rnd.next(1uLL, n);
cnt[s]++;
}
unordered_map<ll, ll> selected;
for (ll s = 1; s <= n; ++s) {
ll k = cnt[s];
if (k == 0) continue;
selected.clear();
for (ll i = 0; i < k; ++i) {
ll range_size = (n - 1) - i;
ll j = rnd.next(1uLL, range_size);
ll val_j = selected.count(j) ? selected[j] : j;
ll val_last =
selected.count(range_size) ? selected[range_size] : range_size;
ll e = (val_j < s) ? val_j : val_j + 1;
double len = rnd.next(eps, 1.0 / eps);
println(s, e, len);
selected[j] = val_last;
}
}
}