比赛 |
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");
}