太难了!!0分!!
查看原帖
太难了!!0分!!
385952
__longtian0210__楼主2021/3/15 21:22
#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n,m;
    cin>>n>>m;
    int cmin[2501],cmax[2501];
    int spf[2501],num[2501];
    for(int i=1;i<=n;i++)
    {
        cin>>cmin[i]>>cmax[i];
    }
    for(int i=1;i<=m;i++)
    {
        cin>>spf[i]>>num[i];
    }
    for(int i=0;i<=n;i++)
    {
        int hand=99999;
        int k;
        for(int j=i+1;j<=n;j++)
        {
            if(cmin[j]<hand)
            {
                hand=cmin[j];
                k=j;
            }
        }
        swap(cmin[i+1],cmin[k]);
        swap(cmax[i+1],cmax[k]);
    }
    for(int i=0;i<=n;i++)
    {
        int hand=9999;
        int k;
        for(int j=i+1;j<=n;j++)
        {
            if(spf[j]<hand)
            {
                hand=spf[j];
                k=j;
            }
        }
        swap(spf[i+1],spf[k]);
        swap(num[i+1],num[k]);
    }
    priority_queue<int,vector<int>,greater<int> > q;
    int j=1;
    int ans=0;
    for(int i=1;i<=m;i++)
    {
        while(j<=n && cmin[j]<=spf[i])
        {
            q.push(cmax[j]);
            j++;
        }
        while(q.empty()==false&&num[i]>0)
        {
            int t=q.top();
            q.pop();
            if(t>=spf[i])
            {
                ans++;
                num[i]--;
            }
        }
    }
    cout<<ans;
    return 0;
}
2021/3/15 21:22
加载中...