Files
BMSSP/generator/gen1.cpp

55 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);
if (cnt[s] == n - 1) {
i--;
continue;
}
cnt[s]++;
}
unordered_map<ll, ll> M;
for (ll s = 1; s <= n; ++s) {
ll k = cnt[s];
if (k == 0) continue;
M.clear();
const ll N = n - 1;
for (ll i = 0; i < k; ++i) {
ll R = N - i;
ll j = rnd.next(1uLL, R);
ll val_j = M.count(j) ? M[j] : j;
ll val_last = M.count(R) ? M[R] : R;
M[j] = val_last;
ll e = (val_j < s) ? val_j : val_j + 1;
double len = rnd.next(eps, 1.0 / eps);
println(s, e, len);
}
}
}