#include using namespace std; int a[101][101] = {0}; //比较的方法 bool cmp(const pair &x, const pair &y) { return x.second > y.second; } int main() { //输入+输出重定向 freopen("../1132.txt", "r", stdin); // 教室中坐成了M行N列 // K条横向的通道,L条纵向的通道 // D对同学 int m, n, k, l, d; cin >> m >> n >> k >> l >> d; //读取d行数据, for (int i = 1; i <= d; ++i) { int x, y, p, q; cin >> x >> y >> p >> q; //交头接耳的同学坐标 a[x][y] = i; a[p][q] = i; } //横向放入的结果 vector> h; //纵向放入的结果 vector> v; //模拟横向,一共是m行,那么就是m-1个空 for (int i = 1; i <= m - 1; ++i) { //如果放在ai和a(i+1)之间,那么会减少几个交头结耳 //遍历二维数组,看看是不是有行为 i和i+1,同时同一列为1的,计一下数量 int count = 0; for (int j = 1; j <= n; ++j) { if (a[i][j] == a[i + 1][j] && a[i][j] > 0) { count++; } } //cout << "row:" << i << " " << count << endl; h.push_back({i, count}); } //模拟纵向,一共是n列,那么就是n-1个空 for (int j = 1; j <= n - 1; ++j) { int count = 0; for (int i = 1; i <= m; ++i) { if (a[i][j] == a[i][j + 1] && a[i][j] > 0) { count++; } } //cout << "col:" << j << " " << count << endl; v.push_back({j, count}); } //按个数进行排序 sort(h.begin(), h.end(), cmp); sort(v.begin(), v.end(), cmp); //居然还要求输出的顺序格式,太可耻了! vector h1; for (int i = 1; i <= k; ++i) { h1.push_back(h[i - 1].first); } sort(h1.begin(), h1.end()); for (int i = 0; i < h1.size(); ++i) { cout << h1[i]; if (i < h1.size() - 1)cout << " "; } cout << endl; vector v1; for (int i = 1; i <= l; ++i) { v1.push_back(v[i - 1].first); } sort(v1.begin(), v1.end()); for (int i = 0; i < v1.size(); ++i) { cout << v1[i]; if (i < v1.size() - 1)cout << " "; } cout << endl; //关闭文件 fclose(stdin); return 0; }