La 3971

来源:互联网 发布:手机淘宝怎样实人认证 编辑:程序博客网 时间:2024/05/20 22:29
#include<cstdio>#include<cstdlib>#include<cstring>#include<cmath>#include<iostream>#include<algorithm>#include<map>#include<vector>using namespace std;#define INF 0x7f7f7f7f#define MAXN (1000+5)#define MAXC (20+5)struct node{int id, gd, pr;};int n, rn, b;map<string, int> ID;vector<node> com[MAXN];void init(){ID.clear();for(int i = 0; i < MAXN; i++) com[i].clear(); }int ID_maker(char* name){string s(name);if(!ID.count(s)) ID[s] = ++n;return ID[s];}bool check(int min_g){int ret = 0;for(int i = 1; i <= n; i++){int small = INF, tmp = com[i].size();for(int j = 0; j < tmp; j++){    if(com[i][j].gd >= min_g)    small = min(small, com[i][j].pr);}if(small == INF) return false;ret += small;if(ret > b) return false;}return true;}int main(){int T;scanf("%d", &T);while(T--){init();scanf("%d%d", &rn, &b);n = 0;char name[MAXC], tmp[MAXC];int R = 0;for(int i = 1; i <= rn; i++){int g, p, id;scanf("%s%s%d%d\n", name, tmp, &p, &g);id = ID_maker(name);com[id].push_back((node){id, g, p});R = max(R, g);}int L = 0;while(L < R){int mid = L + (R-L+1)/2;if(check(mid)) L = mid;else R = mid-1;}printf("%d\n", L);}return 0;}

0 0
原创粉丝点击