hdu 4864

贪心

#include<iostream>
#include<cstdio>
#include<cstring>
#include<stack>
#include<algorithm>
using namespace std;
stack<int>st[1444];
struct node
{
    int x,y;
}a[111111],b[111111];
int n,m;
bool cmp(node e,node f)
{
    if(e.y==f.y)return e.x<f.x;
    else return e.y<f.y;
}
int main()
{
    while(scanf("%d%d",&n,&m)!=EOF)
    {
        for(int i=0;i<n;i++)scanf("%d%d",&a[i].x,&a[i].y);
        for(int i=0;i<m;i++)scanf("%d%d",&b[i].x,&b[i].y);
        sort(a,a+n,cmp);
        sort(b,b+m,cmp);
        for(int i=0;i<=1440;i++)
        {
            while(st[i].size())st[i].pop();
        }
        int u=0,v=0;
        long long ans=0;
        int num=0;
        for(int i=0;i<=100;i++)
        {
            while(v<m)
            {
                if(b[v].y>i)break;
                st[b[v].x].push(b[v].y);
                v++;
            }
            while(u<n)
            {
                if(a[u].y>i)break;
                for(int j=a[u].x;j>=0;j--)
                {
                    if(st[j].size())
                    {
                        int temp=st[j].top();
                        st[j].pop();
                        ans+=temp*2+j*500;
                        num++;
                        break;
                    }
                }
                u++;
            }
        }
        printf("%d %I64d\n",num,ans);
    }
    return 0;
}


你可能感兴趣的:(Baoge)