//http://acm.hdu.edu.cn/showprobym.php?pid=4864 #include #include using namespace std; const int maxn=100005; struct Data { int x,y; }; inline bool cmp(const Data &a,const Data &b) { return a.x>b.x||(a.x==b.x&&a.y>b.y); } int n,m; Data mac[maxn],wrk[maxn]; int main() { #ifdef local freopen("pro.in","r",stdin); #endif while(scanf("%d%d",&n,&m)==2) { for(int i=0;i=wrk[i].x;j++) cnt[mac[j].y]++; for(int k=wrk[i].y;k<=100;k++) if(cnt[k]) { cnt[k]--; tot++; money+=wrk[i].x*500+wrk[i].y*2; break; } } printf("%lld %lld\n",tot,money); } return 0; } /* #include #include #include #include using namespace std; const int maxn=100005; struct Data { int x,y; }; inline bool cmp(const Data &a,const Data &b) { return a.x>b.x||(a.x==b.x&&a.y>b.y); } int n,m; Data mac[maxn],wrk[maxn]; int main() { #ifdef local freopen("pro.in","r",stdin); #endif while(scanf("%d%d",&n,&m)==2) { for(int i=0;i st; for(int i=0,j=0;i=wrk[i].x;j++) st.insert(mac[j].y); multiset::iterator it=st.lower_bound(wrk[i].y); if(it==st.end()) continue; st.erase(it); tot++; money+=wrk[i].x*500+wrk[i].y*2; } printf("%lld %lld\n",tot,money); } return 0; } */