hdu-4864 Task 2014多校联赛第一场 贪心

来源:互联网 发布:二维旋转矩阵的推导 编辑:程序博客网 时间:2024/06/06 01:40

题目链接


#include "stdio.h"#include "string.h"#include "queue"#include "iostream"#include "functional"#include "map"#include "algorithm"using namespace std;const int maxn = 100005;const int mod = 1000000007 ;const int inf = 1<<30;typedef __int64 LL;int n,m;map<int,int>M;struct node{int t,l;}task[maxn],mac[maxn];bool cmp( node a,node b ){if( a.t == b.t )return a.l > b.l;return a.t > b.t;}int main(){#ifndef ONLINE_JUDGE     //freopen("data.txt","r",stdin);     #endif  int t,l;while( scanf("%d%d",&n,&m) != EOF ){int ans = 0;LL val = 0;for( int i = 1; i <= n; i ++ )scanf("%d%d",&mac[i].t,&mac[i].l);for( int i = 1; i <= m; i ++ )scanf("%d%d",&task[i].t,&task[i].l);sort( mac+1,mac+n+1,cmp );sort( task+1,task+m+1,cmp );M.clear();int k = 1;for( int i = 1; i <= m; i ++ ){while( k <= n && mac[k].t >= task[i].t ){M[mac[k].l] ++;k ++;}map<int,int>::iterator it = M.lower_bound( task[i].l );if( it != M.end() ){ans ++;val += task[i].t * 500 + task[i].l * 2;int t = it->first;M[t]--;if( M[t] == 0 ) M.erase( t );}}printf("%d %I64d\n",ans,val);}return 0;}


0 0