比赛 NOIP模拟赛by mzx Day1 评测结果 AWAWAWWAWW
题目名称 昆特-冠位指定 最终得分 40
用户昵称 Rapiz 运行时间 1.088 s
代码语言 C++ 内存使用 0.84 MiB
提交时间 2016-10-19 21:51:12
显示代码纯文本
#include<cstdio>
#include<algorithm>
#include<vector>
#include<cstring>
#define file(x) "gwent_grandorder."#x
using std::vector;
using std::sort;
const int MAXN=100010;
struct CD{int v,po;}cds[MAXN];
int n,m,k,eny;
bool cmppo(const CD& a,const CD& b){
	return a.po>b.po;
}
bool check(int nv){
	int sum=0,cnt=0;
	for(int i=1;i<=n&&cnt<k;i++) if(cds[i].v<=nv) sum+=cds[i].po,cnt++;
	return sum>=eny;
}
int main(){
	freopen(file(in),"r",stdin);
	freopen(file(out),"w",stdout);
	scanf("%d%d%d",&n,&m,&k);
	for(int i=1;i<=m;i++){
		int v,t;
		scanf("%d%d",&v,&t);
		if(t==1||t==3){
			int po,kd,spy;
			scanf("%d%d%d",&kd,&po,&spy);
			eny+=po;	
		}
	}
	int foo=0;
	for(int i=1;i<=n;i++){
		int v,t;
		scanf("%d%d",&v,&t);
		if(t==1||t==3){
			cds[++foo].v=v;
			int kd,spy;
			scanf("%d%d%d",&kd,&cds[foo].po,&spy);
		}
	}
	n=foo;
	sort(cds+1,cds+1+n,cmppo);
	int l=0,r=1e9+10,mid;
	while(l<r){
		mid=l+r>>1;
		if(check(mid)) r=mid;
		else l=mid+1;
	}
	if(check(l)) printf("%d",l);
	else printf("SingleDogMZX");
}