#include #include #include #include #include #include #include #include #include #include #include #include using namespace std; int main(int argc, char** argv){ if(argc < 8){ cerr << "Usage: " << argv[0] << " SEED K R TMAX CMAX WMAX COMPLETE(0/1)\n"; return 1; } long long SEED = stoll(argv[1]); int K = stoi(argv[2]); int R = stoi(argv[3]); int TMAX = stoi(argv[4]); int CMAX = stoi(argv[5]); int WMAX = stoi(argv[6]); int COMPLETE = stoi(argv[7]); mt19937_64 rng(SEED); auto rnd = [&](int lo,int hi){ uniform_int_distribution d(lo,hi); return d(rng); }; cout << R << "\n"; for(int i=1;i<=R;i++) cout << rnd(1, max(1,TMAX)) << (i==R?'\n':' '); cout << K << "\n"; for(int i=1;i<=K;i++) cout << rnd(1, max(1,CMAX)) << (i==K?'\n':' '); long long maxE = 1LL*K*(K-1)/2; vector> all; all.reserve((size_t)min(maxE, 100000)); for(int i=1;i<=K;i++) for(int j=i+1;j<=K;j++) all.emplace_back(i,j); vector> use; if(COMPLETE){ use = all; } else { size_t target = min(all.size()/4, 90000); shuffle(all.begin(), all.end(), rng); use.assign(all.begin(), all.begin()+target); } if(use.size() > 90000) use.resize(90000); cout << use.size() << "\n"; for(auto &e : use){ cout << e.first << " " << e.second << " " << rnd(1, max(1,WMAX)) << "\n"; } return 0; }