Start
This commit is contained in:
50
generator/gen1.cpp
Normal file
50
generator/gen1.cpp
Normal file
@@ -0,0 +1,50 @@
|
||||
#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;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user