Почему последний тестовый набор всегда равен 0, независимо от предоставленного ввода

#c

#c

Вопрос:

почему выходные данные для последнего тестового примера всегда равны 0, независимо от входных данных. Это решение проблемы на Hackerearth, и я потратил на это много времени, и я не могу понять, почему всегда последний тестовый набор постоянно выдает результат 0. Я получаю правильный ответ или тот же ввод, который произвел вывод 0, дает правильный ответ, когда тот же тестовый набор вводится первым. Код отлично работает для всех входных данных, кроме последнего, который когда-либо был заказан. Может ли кто-нибудь выяснить, в чем проблема?

 #include <bits/stdc  .h>
typedef long long ll;
using namespace std;
int main()
{
    int i,j,t,n,p,g;
    cin>>t;
    while (t>0)
   {
      int p1=0,p2=0;
        string s[15];
        cin >>g>>p;
        cin >>n;
        for ( i = 0 ; i < n ; i   )
        { 
           getline ( cin , s[ i ]);
           if (s[i][0] == '1')
              p1  ; 
             if (s[i][2] == '1')
             p2  ;   
        }
        if ((p1*g   p2*p) > (p1*p   p2*g))
            cout<<(p1*p   p2*g)<<endl;
        else 
            cout<<(p1*g   p2*p)<<endl;
            t--;
    }
    return 0;
}
  

Комментарии:

1. Вероятно, не связано, но ваш отступ предполагает t-- , что он находится в блоке else, хотя это не так…

2. Спасибо. Но проблема не в этом.

Ответ №1:

Единственный сбой в вашей проблеме: вместо использования getline ( cin , s[ i ]); вам нужно использовать cin>>s[i][0]>>s[i][2]; , я надеюсь, это решит вашу проблему и даст желаемый результат. Спасибо