在codechef中获得错误答案:平衡竞赛

时间:2017-10-11 09:12:16

标签: c++

问题的链接是" https://www.codechef.com/OCT17/problems/PERFCONT" 我已经找到了解决这个问题的方法,但我得到了错误的答案。

我的解决方案:

#include<iostream>
using namespace std;
int main(){
long long int hard,cakewalk,t,temp;
long long int n,p;
cin>>t;
while(t--){
    hard = cakewalk = 0;
    cin>>n;
    cin>>p;
    while(n--){
        cin>>temp;
        if(temp<=(p/10))
            hard++;
        if(temp>=(p/2))
            cakewalk++;
        if(hard>2 || cakewalk>1){
            break;
        }
    }
    if(hard==2 && cakewalk ==1){
        cout<<"yes"<<endl;
    }
    else{
        cout<<"no"<<endl;
    }
}
return 0;
}

正如我已经收集的那样,我们必须计算Hard和Cakewalk类型问题的数量,如果分别只有2和1,那么这是一场平衡的比赛。 请帮助我解决这个问题。

1 个答案:

答案 0 :(得分:0)

你正在获得WA,因为你在hard > 2 || cakewalk > 1没有阅读整个输入行时就会中断。因此,在它中断并给出给定测试用例的正确输入之后,它将失败,因为下一次输入的数字在技术上不是下一个测试用例的输入。这是第一个测试用例的剩余部分。

输入:

2
4 100
1 1 1 1
2 100
1 50

对于第一个测试用例,从第3行读取1 1 1后跳过输入。因此,您接下来的输入为1(考虑为n),而对于下一个测试用例,n应为2。

删除它应该有效:

 if(hard>2 || cakewalk>1){
            break;
  }