#include #include #include using namespace std; #define pb push_back int N, K; struct team_info { int s, p, u, point; }; vector t; vector ans; int successt[100005]; bool comp(const team_info &t1, const team_info &t2) { if (t1.s == t2.s) { if(t1.u < t2.u) { return true; } else if (t1.u > t2.u) { return false; } else { if(t1.p < t2.p) { return true; } else { return false; } } } return t1.s > t2.s; } int main(void) { cin.tie(0); ios::sync_with_stdio(false); int S, P, U; team_info ti; cin >> N >> K; for (int i = 0; i < N; i++) { cin >> S >> P >> U; ti.s = S; ti.p = P; ti.u = U; ti.point = i; t.pb(ti); } sort(t.begin(), t.end(), comp); for(int i = 0; i < N; i++) { cout << t[i].s << " " << t[i].p << " " << t[i].u << endl; } int count = 0, i, j; int maxp; while(count < K) { team_info mt = t[0]; int mi = 0; for (i = 1; i < N; i++) { if(mt.s > t[i].s) break; if(successt[mt.u] > successt[t[i].u]) { mt = t[i]; mi = i; } else if(successt[mt.u] == successt[t[i].u]) { if(mt.p > t[i].p) { mt = t[i]; mi = i; } } } ans.pb(mt.point); t.erase(t.begin() + mi); successt[mt.u]++; count++; } for (int i = 0; i < K; i++) { cout << ans[i] << endl; } return 0; }