给定的代码不适用于给定的问题

时间:2019-02-06 16:12:54

标签: c++ error-handling

我没有网站正在检查的案例,仅提供以下示例。

输入 输入的第一行包含一个整数T,表示测试用例的数量。 T测试用例的描述如下。 每个测试用例的第一行包含一个整数N。 第二行包含N个以空格分隔的整数a1,a2,…,aN。 第三行包含N个以空格分隔的整数d1,d2,…,dN。

输出 对于每个测试用例,请打印一行包含一个整数-国王获得的盾牌的最佳防御值;如果可以将Chef扔进蛇坑,则为-1。

约束 1≤T≤100 3≤N≤100 每个有效i1≤ai,di≤104

示例输入

2
4
1 1 4 1
3 4 2 1
7
5 4 5 4 5 4 5
3 2 4 7 2 5 9

示例输出

3
-1

说明

案例1:士兵2和/或士兵4可以攻击士兵1。如果只有士兵2攻击他,那么攻击力为1。如果只有士兵4攻击他,攻击力再次为1。如果他们一起进攻,则进攻的力量为2。在每种情况下,士兵1都会活着。

士兵2可以被攻击者4攻击,攻击力为4。他的盾牌的防御值为4,这是不够的,因此在这种情况下,士兵2将会死亡。最好的安全选择是士兵1,防御力为3。

示例2:不能保证士兵能在战斗中幸存下来,所以答案是-1。

#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int main() {
    int T;
    cin>>T;
    if(T > 100 || T<1) return 0;

    do{
        vector<long int> ans;
        int N;
        cin>>N;
        if(N > 100 || N<3) return 0;
        vector<int> attackArray(N), defArray(N);

        for (int i =0; i<N; i++) {
            cin>>attackArray.at(i);
        }
        for (int i =0; i<N; i++) {
            cin>>defArray.at(i);
        }
        if (defArray.at(0) > attackArray.at(1) && 
    defArray.at(0) > attackArray.at(N-1) && 
    defArray.at(0)> attackArray.at(1) + attackArray.at(N-1)){

        ans.push_back(defArray.at(0));

    }
    if (defArray.at(N-1) > attackArray.at(0) && 
    defArray.at(N-1) > attackArray.at(N-2) && 
    defArray.at(N-1)> attackArray.at(0) + attackArray.at(N-2)){

        ans.push_back(defArray.at(N-1));

    }


        for (int i =1; i<N-1; i++) {
   int nexti, previ;

    nexti = i + 1;
    previ = i - 1;

if (defArray.at(i) > attackArray.at(nexti) && 
    defArray.at(i) > attackArray.at(previ) && 
    defArray.at(i)> attackArray.at(nexti) + attackArray.at(previ)){

        ans.push_back(defArray.at(i));

    }
else {ans.push_back(-1); break;}

}

        sort(ans.begin(), ans.end(), greater<int>());
        cout<<ans[0]<<endl;

        T--;
    }while (T !=0);


    return 0;
}

0 个答案:

没有答案