// Wrongri-La Shower #include #include #include #include #include #include int N, M; int list[3000][3]; int point = 0; std::vector v, best; template std::function randomR( T lb, // ^ 下限 T ub // ^ 上限 ){ std::random_device rd; std::array seeds; std::generate(seeds.begin(), seeds.end(), std::ref(rd)); std::seed_seq seq(seeds.begin(), seeds.end()); return std::bind(std::uniform_int_distribution(lb, ub), std::mt19937(seq)); } int evaluate(){ int point = 0; for(int i=0;i choose; void change(){ int a = choose(), b = choose(); if(a == b){return;} std::vector u(v.begin(), v.end()); std::swap(v[a], v[b]); int p = evaluate(); if(p > point){ point = p; std::copy(v.begin(), v.end(), best.begin()); }else{ v = std::move(u); } } int main(){ scanf("%d %d", &N, &M); for(int i=0;i