C/C++

Задачка на программирование . С++

Не могу понять в чем ошибка, почему программа сириус не принимает данную задачку. Я пробовал менять сout << i + 1 и cout << i . Кажется, ошибка не в этом. Вот условие и мой код, помогите разобраться в чем ошибка
#include <iostream>

#include <vector>

using namespace std;

int main()

{

int n, m, k;

cin >> n >> m;

vector < vector<int> > A(n, vector<int>(m));

for ( int i = 0; i < A.size(); ++i ){

for ( int j = 0; j < A[i].size(); ++j){

cin >> A[i][j];

}

}

cin >> k;

bool flag = false;

int comp = 1;

for ( int i = 0; i < A.size(); ++i){

for ( int j = 1; j < A[i].size(); ++j){

if ( A[i][j] == 0 && A[i][j-1] == 0 ){

++comp;

}

if( comp == k){

flag = true;

}

if ( A[i][j] == 1){

comp = 1;

}

}

if ( flag ){

cout << i + 1;

break;

}

}

if (!flag){

cout << 0;

}

}
Я нашел как минимум 1 ситуацию при которой программа дает неправильный результат. Прикрепляю скрин.
Ты предполагаешь что в ряду будет как минимум одно свободное место, однако такого ограничения в условии дано не было.
АК
Андрей Казак
17 671
Лучший ответ
#include <iostream>
#include <array>
using namespace std;
constexpr size_t length = 30;
using row_t = array<int, length>;
using hall_t = array<row_t, length>;
int find_vacancies(const row_t& row, const size_t m) {
auto n = 0;
for (size_t i = 0; i < m; ++i) {
if (row[i] != 0) n = 0;
else ++n;
}
return n;
}
int main() {
hall_t matrix{};
size_t n, m;
cin >> n >> m;
for (size_t i = 0; i < n; ++i) {
for (size_t j = 0; j < m; ++j) {
cin >> matrix[i][j];
}
}
int k;
cin >> k;
size_t i = 0;
while (i < n) {
auto x = find_vacancies(matrix[i], m);
++i;
if (x >= k) break;
}
if (i != n) cout << i;
else cout << '0';
}
Андрей Симонов
Андрей Симонов
67 155
#include <iostream>
#include <vector>
int main()
{
uint16_t n, m, k;
std::cin >> n >> m;
if (n > 30 || m > 30) { std::cout << "Wrong sizes\n"; return 1; }
std::vector<std::string> arr(n);
for (auto& i : arr) { std::cin >> i; if (i.size() > m) { std::cout << "Wrong sizes\n"; return 1; } }
std::cin >> k; n = 1;
std::string empty(k, '0');
for (auto& i : arr)
{
if (i.find(empty) != std::string::npos) { std::cout << n; return 0; }
n++;
}
std::cout << 0;
}
Андрей Симонов Да, но как быть с пробелами?
Александр Рогов Какие пробелы? Кто нибудь видел пробелы? Я не видел пробелы! Нету никаких пробелов!
В общем ввод через пробел я не учел, сажусь, два!