В чем ошибка? На 5 тесте Wrong Answer
#include <string>
#include <queue>
using namespace std;
int main()
{
int n;
int ch = 0;
int nech = 0;
cin >> n;
vector<int> Vector(n);
queue<int> Queue;
for (int i = 0; i < n; i++)
{
cin >> Vector[i];
}
for (int i = 0; i < n; i++)
{
if (Vector[i] % 2 != 0)
{
cout << Vector[i] << " ";
nech++;
}
if (Vector[i] % 2 == 0)
{
Queue.push(Vector[i]);
ch++;
}
}
cout << "\n";
while (!Queue.empty())
{
int val = Queue.front();
Queue.pop();
cout << val << " ";
}
if (ch > nech)
{
cout << "\nYES";
}
else
{
cout << "\nNO";
}
}
Задача Вася не любит английский язык, но каждый раз старается получить хотя бы четверку за четверть, чтобы оставаться ударником. В текущей четверти Вася заметил следующую закономерность: по нечетным дням месяца он получал тройки, а по четным – четверки. Так же он помнит, в какие дни он получал эти оценки. Поэтому он выписал на бумажке все эти дни для того, чтобы оценить, сколько у него троек и сколько четверок. Помогите Васе это сделать, расположив четные и нечетные числа в разных строчках. Вася может рассчитывать на оценку 4, если четверок не меньше, чем троек.
Входные данные
В первой строке входного файла INPUT.TXT записано единственное число N – количество элементов целочисленного массива (1 ≤ N ≤ 100). Вторая строка содержит N чисел, представляющих заданный массив. Каждый элемент массива – натуральное число от 1 до 31. Все элементы массива разделены пробелом.
Выходные данные
В первую строку выходного файла OUTPUT.TXT нужно вывести числа, которые соответствуют дням месяцев, в которые Вася получил тройки, а во второй строке соответственно расположить числа месяца, в которые Вася получил четверки. В третьей строке нужно вывести «YES», если Вася может рассчитывать на четверку и «NO» в противном случае. В каждой строчке числа следует выводить в том же порядке, в котором они идут во входных данных. При выводе числа отделяются пробелом.
Примеры:
Ответы (4 шт):
Мне кажется, что нужно наверное так:
if (ch >= nech)
Мой вариант:
#include <string>
#include <queue>
#include <iostream>
using namespace std;
short N;
vector<short> v;
vector<short> even;
vector<short> odd;
short ch = 0, ne_ch = 0;
int main()
{
cin >> N;
v.resize(N);
for (auto& i : v)
cin >> i;
auto is_even = [](const auto lhs) { if (lhs % 2 == 0) { ch++; return true; } else return false; };
auto is_odd = [](const auto lhs) { if (lhs % 2 != 0) { ne_ch++; return true; } else return false; };
even.resize(count_if(v.begin(), v.end(), is_even));
odd.resize(count_if(v.begin(), v.end(), is_odd));
copy_if(v.begin(), v.end(), even.begin(), is_even);
copy_if(v.begin(), v.end(), odd.begin(), is_odd);
for (const auto i : odd)
cout << i << ' ';
cout << endl;
for (const auto i : even)
cout << i << ' ';
cout << endl;
if (ch >= ne_ch)
cout << "YES";
else
cout << "NO";
return 0;
}
Ошибка, imho, в сложности решения... Так не хотите?
int main(int argc, char * argv[])
{
vector<int> e, o;
int n, s = 0;
cin >> n;
for(int i = n; i-->0;)
{
cin >> n;
s += 1 - 2*(n%2);
(n%2 ? o : e).push_back(n);
}
for(int i: o) cout << i << " "; cout << "\n";
for(int i: e) cout << i << " "; cout << "\n";
cout << (s >= 0 ? "YES" : "NO");
}
Ну, а у вас проблема в том, что если средняя оценка 3.5, то можно рассчитывать на четверку. А 3.5 — это когда четверок столько же, сколько и пятерок...
не смотрел, что ты написал, но делал вот так: У меня нужно вывести 4, если 4, 3 если среднее 3. Можешь просто в коде поменять 4 и 3 на "Yes" и "No". Если поможет, оцени, пожалуйста, я старался
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int n, ne, ch, num=0;
cin >> n; /* ввод n */
vector<int> chet, nec; /* делаю вектора */
for (int i = 0; i < n; i++)
{
cin >> num; /* ввод чисел и проверка на чётность */
if (num % 2 == 0)
{
chet.push_back(num); /* четный идет в конец вектора четных */
}
else
{
nec.push_back(num);
}
}
ch = chet.size(); /* определяю размеры получившихся векторов и приравниваю к переменным для удобства */
ne = nec.size();
for (int i = 0; i < ne; i++) /* вывод значений вектора с нечетными значениями и пробелы */
{
cout << nec[i] << ' ';
}
cout << endl;
for (int i = 0; i < ch; i++)
{
cout << chet[i] << ' ';
}
cout << endl;
if (ch >= ne)
{
cout << "4"; //* ты вместо 4 ставь Yes *//
}
else
{
cout << "3"; //* вместо 3 ставь No *//
}
return 0; /* Никите привет от Mike Novi) */
}
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int n;
cin >> n;
vector<int> v(n);
vector<int> even, Neven;
for (int i = 0; i < n; ++i){
cin >> v[i];
if (v[i] % 2 != 0){
Neven.push_back(v[i]);
} else {
even.push_back(v[i]);
}
}
for (int i = 0; i < Neven.size(); ++i) {
cout << Neven[i] << " ";
}
cout << endl;
for (int i = 0; i < even.size(); ++i) {
cout << even[i] << " ";
}
cout << endl;
if (even.size() >= Neven.size()) {
cout << 4;
} else {
cout << 3;
}
return 0;
}
