O/J系统可莉打丘丘人

问题遇到的现象和发生背景 题目描述

可莉的攻击力为A,血量为H,某片区域有N个丘丘人,第i个丘丘人的攻击力为A_i,血量为H_i,丘丘人或可莉的血量小于1则视为死亡。

可莉将与丘丘人战斗,直到可莉死亡或这片区域所有丘丘人死亡。在每次战斗中,可莉都可以和一个活的丘丘人i战斗,

经过战斗后丘丘人的血量减少A,同时可莉的血量减少A_i,且可莉可以与同一个丘丘人多次战斗。

请判断可莉是否可以击败这片区域所有的丘丘人(即使可莉在击败最后一个丘丘人之后死亡)。

输入格式
第一行输入三个整数,代表可莉的攻击力A、血量H和某片区域丘丘人数量n;

接下来一行n个整数代表丘丘人的攻击力A_i;

接下来一行n个整数代表丘丘人的血量H_i。

输出格式
如果可以输出YES,不可以输出NO。

样例
输入样例

3 17 1
2
16
输出样例

YES

用代码块功能插入代码,请勿粘贴截图
#include
using namespace std;
int main()
{
    int fight, blood, n, flag = 1;//利用旗帜判断输赢
    cin >>fight >>blood >>n;
    int qiuf[100], qiub[100];
    for(int i = 0; i < n; i++)//输入丘丘人的攻击力和血量
    {
        cin >>qiuf[i];
        cin >>qiub[i];
    }
    for(int i=0; i < n-1; i++)//与n-1只丘丘人的交战
    {
        while(blood > 0 && qiub[i] > 0)//多次交战,相互扣血
        {
            blood = blood - qiuf[i];
            qiub[i] = qiub[i] - fight;
        }
    }
    if(blood <= 0)//判断结果
        flag = 0;
    while(blood > 0 && qiub[n-1] > 0)//与最后一只丘丘人的交战
    {
        blood = blood - qiuf[n-1];
        qiub[n-1] = qiub[n-1] - fight;
    }
    if(blood <= 0 && qiub[n-1] > 0 )//判断结果
        flag = 0;
    if(flag == 0)
        cout<<"NO";
    else
        cout<<"YES";
    return 0;
}

运行结果及报错内容 在第二个监测点出错,答案为yes,我判断为no,经过测试,是在与最后一只丘丘人的交战

中误判。

我的解答思路和尝试过的方法 分类讨论前面几只和最后一只的交战。
我想要达到的结果:发现误判的原因