• L2-034 口罩发放 (25 分)


    身份证号必须是 (18) 位的数字数字数字,大概是眼瞎了。

    1. 同一个身份证号若在第 i 天申请成功,则接下来的 P 天不能再次申请。也就是说,若第 i 天申请成功,则等到第 i+P+1 天才能再次申请;
    2. 按照提交时间的先后顺序发放,直至全部记录处理完毕或 S个名额用完。如果提交时间相同,则按照在列表中出现的先后顺序决定。
    3. 最后额外输出有合法记录的、身体状况为 1 的申请人的姓名及身份证号。顺序按照申请记录中出现的顺序确定,同一个人只需要输出一次

    注意2和3给定的输出顺序。

    struct Node
    {
        string name;
        string id;
        bool state;
        string tim;
        int idx;
        int last;
        bool operator<(const Node &W) const
        {
            if(tim != W.tim) return tim < W.tim;
            return idx < W.idx;
        }
    };
    unordered_map<string,Node> mp;
    unordered_set<string> S;
    int n,m;
    
    bool check(string id)
    {
        if(id.size() != 18) return false;
        for(int i=0;i<id.size();i++)
            if(!isdigit(id[i]))
                return false;
        return true;
    }
    
    int main()
    {
        cin>>n>>m;
    
        vector<Node> ans;
        for(int i=1;i<=n;i++)
        {
            int k,s;
            cin>>k>>s;
            vector<Node> a(k);
            vector<Node> res;
    
            for(int j=0;j<k;j++)
            {
                cin>>a[j].name>>a[j].id>>a[j].state>>a[j].tim;
                a[j].idx=j;
                if(check(a[j].id) && a[j].state) ans.pb(a[j]);
            }
    
            sort(a.begin(),a.end());
    
            for(int j=0;j<k;j++)
            {
                string id=a[j].id,name=a[j].name,tim=a[j].tim;
                bool state=a[j].state;
    
                if(s == 0) break;
    
                if(check(id))
                {
                    if(mp[id].last == 0 || i-mp[id].last > m)
                    {
                        mp[id].last=i;
                        s--;
                        res.pb(a[j]);
                    }
                }
            }
            for(auto t:res)
                cout<<t.name<<' '<<t.id<<endl;
        }
    
        for(auto t:ans)
        {
            if(S.count(t.id)) continue;
            cout<<t.name<<' '<<t.id<<endl;
            S.insert(t.id);
        }
    
        //system("pause");
        return 0;
    }
    
  • 相关阅读:
    〖Linux〗转换Socks Proxy为Http Proxy
    〖Linux〗Linux的smb地址转换Windows格式(两者互转)
    〖前端开发〗HTML/CSS基础知识学习笔记
    精确光源(Punctual Light Sources)
    面元间的能量传输
    pbr若干概念
    c# xml 输出注释格式控制
    unity, 立即生效动画:Animation.sample()
    unity, 在材质上指定render queue
    unity, shader, Tags的位置
  • 原文地址:https://www.cnblogs.com/fxh0707/p/14683402.html
Copyright © 2020-2023  润新知