贪心
#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; }