Greedy Candidates Problem Code: GCAC

The placements/recruitment season is going on in various colleges. The interviews are over, and each company has selected some students. But since each student can end up finally in at most one company, a student might have to reject a company which selected him. The companies know this, and hence, the companies usually select more students than it can actually employ. So now, the exact pairings should be done. We talk about one such session in a famous college.

There are a total of N candidates (numbered from 1 to N) and M companies (numbered from 1 to M) taking part in it. Each candidate has a certain minimum expectation of salary, which is given by the array minSalary (All the arrays are 1-indexed). For each candidate, you are also given the information regarding the companies which have selected him. This information is given by an array qual of sizeN * M, where qual[i][j] = 1 if and only if the i-th candidate has qualified for a job in the j-th company. A company will provide a fixed salary to the candidates it employs, which is given by the array offeredSalary. Also, a company has an upper bound on the number of candidates it can employ and finally give an offer to. This information is provided by array maxJobOffers.

The D-day has come. Each candidate from 1, 2, .. N (in this order) will go to the placements coordinator. When the i-th student goes, among the companies which have selected him, and which still haven't reached their maxJobOffers limit, he picks the company which provides the maximum offeredSalary, provided that it is at least his minSalary.

You have to find the number of the candidates that will end up with a job, the total amount of salaries that the candidates will get, and the number of companies that won't be able to employ even a single candidate. This information is very crucial for the placement coordinator, so as to analyze whether it makes sense to invite a company to come to the placements session next year or not. Please help the coordinator!

Input

  • The first line of the input contains an integer T denoting the number of test cases. The description of T test cases follows
  • First line of each test case contains two space separated integer N, M.
  • The next line contains N space separated integers denoting the array minSalary.
  • Each of the next M lines contains two space separated integers denotingofferedSalary[i] and maxJobOffers[i].
  • The next N lines will contain the description of the 2-D array qual. Each of the Nlines will contain M binary integers (without any space): j-th integer in the i-th line will denote qual[i][j].

Output

  • For each test case, output three integers in a new line, denoting the number of the candidates that will get a job, the total amount of salaries that the candidates will get, and the number of companies that won't be able to hire even a single candidate.

Constraints

  • 1 ≤ T ≤ 10
  • 1 ≤ N, M ≤ 103
  • 0 ≤ minSalary[i] ≤ 109
  • 0 ≤ qual[i][j] ≤ 1
  • 1 ≤ offeredSalary[i] ≤ 109
  • 1 ≤ maxJobOffers[i] ≤ 106
  • All elements of the array offeredSalary are distinct

Subtasks

  • Subtask 1 (30 points): 1 ≤ N, M ≤ 200
  • Subtask 2 (70 points): Original Constraints

Example

Input:
1
5 6
5000 10000 3000 20 100
10000 2
800 2
600 1
10 8
1000 9
2000 10
111111
100000
000000
000001
100100 Output:
3 22000 4

Explanation

There are 5 candidates and 6 companies.

The first candidate wants a job that pays at least 5000 Rs.

He has qualified in all the companies, so he will choose the 1st company that provides him the maximum money, 10000 Rs.

The second candidate will get a job offer of 10000 Rs from 1st company.

The third candidate has not qualified in any company, so he won't get any job.

The fourth candidate has qualified only in 6-th company which provides a salary of 2000 Rs

which is greater than or equal to 20, the minimum salary expected by the fourth candidate.

The fifth candidate wants minimum salary 100 Rs. He has qualified in company 1st and 4th.

The 1st company won't hire him as it has already filled the quota of hiring two people.

4th company is providing the candidate less than 100 Rs, so he won't join that too.

So, overall there are three candidates that got the job (first, second and fourth).

Total amount of salary is 10000 + 10000 + 2000 = 22000.

Only first and 6-th companies are able to select some candidates,

so there are 4 companies that are not able to hire any candidate. Hence, the answer will be 3 22000 4.

——————————————————————————————————————————————

这道题其实就是道模拟题 然而体面超级恶心QAQ

其实有n个人m个公司

n个人每个人有一个能接受的工资的底线

m个公司有能给出的工资以及应聘人数

给出一个矩阵表示人和公司之间是否有关系

然后就从第一个人开始贪心地选择大于等于他接受范围的工资里最大的

求能找到工作的人数 他们的工资总和 以及多少个公司一个人都没应聘到

codechef AUG17 T3 Greedy Candidates的更多相关文章

  1. codechef AUG17 T2 Chef and Mover

    Chef and Mover Problem Code: CHEFMOVR Chef's dog Snuffles has so many things to play with! This time ...

  2. codechef AUG17 T1 Chef and Rainbow Array

    Chef and Rainbow Array Problem Code: RAINBOWA Chef likes all arrays equally. But he likes some array ...

  3. codechef AUG17 T5 Chef And Fibonacci Array

    Chef has an array A = (A1, A2, ..., AN), which has N integers in it initially. Chef found that for i ...

  4. codechef AUG17 T4 Palindromic Game

    Palindromic Game Problem Code: PALINGAM There are two players A, B playing a game. Player A has a st ...

  5. codechef T3 计算器

    CALC: 计算器题目描述 大厨有一个计算器,计算器上有两个屏幕和两个按钮.初始时每个屏幕上显示的都是 0.没按 一次第一个按钮,就会让第一个屏幕上显示的数字加 1,同时消耗 1 单位的能量. 每按一 ...

  6. [Optimization] Greedy method

    Given two sequences of letters A and B, find if B is a subsequence of A in thesense that one can del ...

  7. codechef MAY18 div2 部分题解

    T1 https://www.codechef.com/MAY18B/problems/RD19 刚开始zz了,其实很简单. 删除一个数不会使gcd变小,于是就只有0/1两种情况 T2 https:/ ...

  8. [Codechef - AASHRAM] Gaithonde Leaves Aashram - 线段树,DFS序

    [Codechef - AASHRAM] Gaithonde Leaves Aashram Description 给出一棵树,树的"N"节点根植于节点1,每个节点'u'与权重a[ ...

  9. [Codechef - ADITREE] Adi and the Tree - 树链剖分,线段树

    [Codechef - ADITREE] Adi and the Tree Description 树上每个节点有一个灯泡,开始所有灯泡都是熄灭的.每次操作给定两个数 \(a,b\) ,将 \(a,b ...

随机推荐

  1. Dtree 添加 checkbox 复选框 可以默认选中

    一:目标 要实现用一个树形结构的展示数据,每个节点(除了根节点)前有一个checkbox,同时,点击父节点,则子节点全选或者全不选,当选中了全部子节点,父节点选中:如下图所示: 同时可以在创建的时候, ...

  2. php 递归

    function digui($data,$j=0,$lev=0){ $subs=array();//存放子孙数组 foreach ($data as $v){ if ($v['parent_id'] ...

  3. php中处理字符串的常见函数

    编写程序的时候,经常要处理字符串,最基本就是字符串的查找,在php检测字符串中是否包含指定字符串可以使用正则,如果你对正则不了解,那么有几个函数可以为您提供方便. 1. strstr strstr() ...

  4. 一个手机号可以注册绑定5个百度网盘,永久2T

    效果: 一个手机号可以注册绑定5个百度网盘,得永久2T硬盘 手机号只能做为其中一个网盘的登陆账号,其它四个用绑定qq登陆(微信应该也可以). 条件: 2个手机号:A(用来绑定百度网盘),B(用来申请网 ...

  5. commons-logging日志实现解耦

    一.需要解耦      日志是实际应用中的一个重要部分,日志系统也有许多开源的实现,如java.util.logging, logback, log4j系列等.      在使用日志系统时,如果与具体 ...

  6. 学习Pytbon第七天,集合

    list_1=[5,22,2,6,5,66,6,8] list_1=set(list_1)#把列表转成集合,天生不允许 重复 print(list_1,type(list_1) list_2=set( ...

  7. CRM第一篇:权限组件之权限控制

    一.权限组件(1):一级菜单 二.权限组件(2):二级菜单 三.权限组件(3):默认选中非菜单(二级菜单) 四.权限组件(4):给动态菜单增加面包屑导航 五.权限组件(5):权限粒度控制到按钮 六.权 ...

  8. Ubuntu下Python无法识别中文

    在NLP的相关任务中,应用python处理中文是很常见的.在这个过程中,由于编码方式的不一致,可能会出现以下两种错误: 1)SyntaxError:  Non-ASCII character in f ...

  9. 笔记-python-standard library-8.1 data types-datetime

    笔记-python-standard library-8.1 data types-datetime 1.      Datatimes 本章节内容为日期和时间处理类和方法. 1.1.    date ...

  10. 转投emacs

    (global-set-key [f9] 'compile-file) (global-set-key [f10] 'gud-gdb) (global-set-key (kbd "C-z&q ...