0
点赞
收藏
分享

微信扫一扫

打怪C++代码

Silence潇湘夜雨 2022-01-23 阅读 66
c++
#include<bits/stdc++.h>
using namespace std;
struct node{
int x;
int y;
}a[100005],b[100005];
bool cmp1(node a,node b){
return a.x<b.x;
}
bool cmp2(node a,node b){
return a.y>b.y;
}
long long n,z,aa=0,bb=0;
int main(){
cin>>n>>z;
for(int i=1;i<=n;i++){
int x,y;
cin>>x>>y;
if(x<y){
aa++;
a[aa].x=x;
a[aa].y=y;
}
else{
bb++;
b[bb].x=x;
b[bb].y=y;
}
}
sort(a+1,a+1+aa,cmp1);
sort(b+1,b+1+bb,cmp2);
for(int i=1;i<=aa;i++){
z-=a[i].x;
if(z>0)
z+=a[i].y;
else{
cout<<"NIE";
return 0;
}
}
for(int i=1;i<=bb;i++){
z-=b[i].x;
if(z>0)
z+=b[i].y;
else{
cout<<"NIE";
return 0;
}
}
cout<<"TAK";
return 0;
}
I打怪
时间限制 : - MS   空间限制 : - KB 

评测说明 : 1s,128m

问题描述

在一款电脑游戏中,你需要打败n只怪物(从1到n编号)。
为了打败第i只怪物,你需要消耗d[i]点生命值,但怪物死后会掉落血药,使你恢复a[i]点生命值。任何时候你的生命值都不能降到0(或0以下)。
请问是否存在一种打怪顺序,使得你可以打完这n只怪物而不死掉

输入格式

第一行两个整数n,z(1<=n,z<=100000),分别表示怪物的数量和你的初始生命值。
接下来n行,每行两个整数d[i],a[i]
d[i],a[i] <=50000

输出格式

一行为TAK(是)或NIE(否),表示是否存在这样的顺序。

样例输入

3 5
3 1
4 8
8 3

样例输出

TAK 

 

举报

相关推荐

0 条评论