8月10日题目排座椅打卡

#include <iostream>
#include <vector>
#include <algorithm>
#include <unordered_map>
using namespace std;

struct node {
    int index, ct;
    bool operator < (const node & a) const {
        //  if(ct == a.ct) return index < a.index; 好奇这样直接排序为啥不是正确答案
        return ct > a.ct;
    };
};

const int maxn = 2005;
int M, N, K, L, D; // M行N列  K条横向  L条纵向 D对同学
int x[maxn], y[maxn], p[maxn], q[maxn];

int main() {
    cin >> M >> N >> K >> L >> D;
    vector<node> row;
    vector<node> col;
    unordered_map<int, int> mp1, mp2;
    for(int i = 0; i < D; i++) {
        cin >> x[i] >> y[i] >> p[i] >> q[i];
        if(x[i] == p[i]) {
            mp2[min(y[i], q[i])]++;
        } else if(y[i] == q[i]) {
            mp1[min(x[i], p[i])]++;
        }
    }
    for(auto it : mp1) row.push_back({it.first, it.second});
    for(auto it : mp2) col.push_back({it.first, it.second});
    sort(row.begin(), row.end());
    sort(col.begin(), col.end());
    vector<int> ans;
    // for(int i = 0; i < K; i++) cout << row[i].index << " ";
    for(int i = 0; i < K; i++) {
        ans.push_back(row[i].index);
    } 
    sort(ans.begin(), ans.end());
    for(int i : ans) cout << i << " ";
    cout << endl;
    ans.clear();
    // for(int i = 0; i < K; i++) cout << col[i].index << " ";
    for(int i = 0; i < L; i++) {
        ans.push_back(col[i].index);
    }
    sort(ans.begin(), ans.end());
    for(int i : ans) cout << i << " ";
    cout << endl;
    return 0;
}
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务