被坑水题——Kill boss

kill boss

时间限制:1000MS  内存限制:65535K

Description

      Acmer最近喜欢上了玩某个游戏,这个游戏的格斗风格是以格挡,招架,攻击为主,acmer最近打一个boss打了几遍,还是没有打赢,但是经过几次失败后,
acmer大概摸清了boss的出招规律,所以她做好了相应的出招式,acmer被boss砍掉n滴血后会挂掉,对应的只要acmer在挂掉前砍掉boss m滴血,acmer就能赢了。
现在给你boss的最终出招表和acmer的出招表,问你谁能赢,如果都不能赢那就输出impossible。需要注意的是这个游戏中可以以攻为守,给定系数k,我们用正数表示攻击系数,
负数表示防守系数
,如果双方都是攻击,攻击系数大的可以突破别人的攻击(即对方攻击无效),并且给对手所对应k点的伤害,相等的时候就互不伤害。
当双方一个攻击,一个防守时,攻击系数大于防守系数时,可以突破防守(即对方防守无效),并且给对手所对应k点的伤害。
当防守系数不小于攻击系数能够防守住攻击。 如果双方都是防守,那就什么都没有发生。

(出题人xym)

输入格式

第一行有三个数n(1<=n<=1000),m(1<=m<=1000),d(1<=d<=10000),n表示acmer血量,m表示boss血量,d表示出招的数目。
接下来有两行,第一行表示boss的招式表,所有数绝对值都不大于10000
第二行表示 acmer的招式表。所有数绝对值都不大于10000

输出格式

输出一行表示谁赢,acmer表示acmer赢,boss表示boss赢,impossible表示不知道谁赢。

输入样例

10 10 10
1 2 3 -5 3 -6 7 10 15 20
-1 -3 -2 5 5 -5 11 1 2 3

输出样例

acmer

被坑原因就是提交时忘记关freopen重定向了- - 一直错误或者超时,所以还小小优化了一下,然而快放弃时好像想起了什么!!!!

//#pragma comment(linker, "/STACK:1024000000,1024000000")
#include <cstdio>
#include <cstring>
#include <cmath>
//#include <cctype>
#include <queue>
#include <vector>
#include <string>
#include <stack>
#include <set>
#include <map>
//#include <sstream>
#include <iostream>
#include <bitset>
#include <algorithm>
using namespace std;

#define MP make_pair
#define PB push_back
#define mst(a,b) memset((a),(b),sizeof(a))
#define TEST cout<<"*************************"<<endl

#define rep(s,n,up) for(int i = (s); i < (n); i+=(up))
#define per(n,e,down) for(int i = (n); i >= (e); i-=(down))
#define rep1(s,n,up) for(int j = (s); j < (n); j+=(up))
#define per1(n,e,down) for(int j = (n); j >= (e); j-=(down))

typedef long long LL;
typedef unsigned long long uLL;
typedef pair<int, int> Pii;
typedef vector<int> Vi;
typedef vector<Pii> Vii;
const int inf = 0x3f3f3f3f;
const LL INF = (1uLL << 63) - 1;
const double Pi = acos(-1.0);
const int maxn = (1 << 16) + 7;
const uLL Hashmod = 29050993;
const double esp=1e-6;


//#define local
int acmer[10000],boss[10000];
int main() {
#ifdef local
    freopen("input.txt", "r", stdin);
    //freopen("output.txt","w",stdout);
#endif
    //ios::sync_with_stdio(0);
    //cin.tie();
    int n,m,d;
    scanf("%d%d%d",&n,&m,&d);
    rep(0,d,1)scanf("%d",&boss[i]);
    rep(0,d,1)scanf("%d",&acmer[i]);
    rep(0,d,1){
        int tmp=boss[i]+acmer[i];
        if(tmp>0){
        if(boss[i]<0&&acmer[i]>0)
        {
            if(tmp>0)
                m-=acmer[i];
        }
        else if(boss[i]>0&&acmer[i]<0)
        {
            if(tmp>0)
                n-=boss[i];
        }
        else if(boss[i]>=0&&acmer[i]>=0)
        {
            int tmp1=boss[i]-acmer[i];
            if(tmp1>0)
                n-=boss[i];
            else if(tmp1<0)
                m-=acmer[i];
        }
        }
        if(n<=0)
        {
            printf("boss\n");break;
        }
        if(m<=0)
        {
            printf("acmer\n");break;
        }
    }
    if(n>0&&m>0)
        printf("impossible\n");
    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值