zoukankan      html  css  js  c++  java
  • 口罩发放

    #include <iostream>
    #include <vector>
    #include <map>
    #include <algorithm>
    using namespace std;
    const int N = 2800;
    map<string, int>GotTime;
    map<string, int> give;
    map<string, string>id_name;
    struct node {
        string name;
        string id;
        int good;
        string TIME;
        int time;
        int rank;
    }a[N], NotGood[N];
    int top = 0;
    bool cmp(node a, node b) {
        if (a.time == b.time) return a.rank < b.rank;
        return a.time < b.time;
    }
    int GetTime(string s) {
        int h = 0;
        h += s[0] - '0';
        h *= 10;
        h += s[1] - '0';
        int m = 0;
        m += s[3] - '0';
        m *= 10;
        m += s[4] - '0';
        return h * 60 + m;
    }
    bool check(string s, string name) {
        if (s.length() != 18)return 0;
        for (auto c:s){if (!(c >= '0' && c <= '9'))return 0;}
        return 1;
    }
    int main() {
        int DAY, gap_day;cin >> DAY >> gap_day;
        for (int i = 1; i <= DAY; i ++) {
            int info;int mask;cin >> info >> mask;
            int cnt = 0;
            for (int j = 1; j <= info; j ++) {cnt++;
                cin >> a[cnt].name >> a[cnt].id >> a[cnt].good >> a[cnt].TIME;
                a[cnt].rank = j;
                a[cnt].time = GetTime(a[cnt].TIME);
                if (!check(a[cnt].id, a[cnt].name))cnt--;
                if (a[cnt].good == 1) NotGood[++top] = a[cnt];
            }
            info = cnt;
            sort(a + 1, a + 1 + info, cmp);
            give.clear();
            for (int j = 1; j <= cnt; j ++) {
                if (!GotTime.count(a[j].id) || GotTime[a[j].id] + gap_day + 1<= i) {
                    if (!give.count(a[j].id) && mask > 0) {
                        GotTime[a[j].id] = i;
                        cout << a[j].name << " " << a[j].id << endl, mask--;
                        give[a[j].id] = 1;
                    }
                }
            }
        }
        give.clear();
        for (int i = 1; i <= top; i ++) {
            if (!give.count(NotGood[i].id)) {
                give[NotGood[i].id] = 1;
                cout << NotGood[i].name << " " << NotGood[i].id << endl;
            }
        }
    }
    
  • 相关阅读:
    b_lc_数组的最大公因数排序(并查集+质因数分解优化)
    Coggle 30 Days of ML:结构化赛题:天池二手车交易价格预测(二)
    Coggle 30 Days of ML:结构化赛题:天池二手车交易价格预测(一)
    漫谈
    漫谈
    漫谈
    漫谈
    漫谈
    漫谈
    漫谈
  • 原文地址:https://www.cnblogs.com/Xiao-yan/p/14638842.html
Copyright © 2011-2022 走看看