C/C++

Программирование на C++

Вот задача
Дано целое нечетное число n и последовательность a [1] , a [2] , … , a [n] . Назовем последовательность красивой, если для каждого четного i верно, что a [i] − 1 < a [i] > a[i+1],например последовательность ( 1 , 3 , 1 , 5 , 2 ) является красивой, а последовательности ( 3 , 1 , 3 ) , ( 1 , 2 , 2 ) , ( 1 , 3 , 5 ) — нет. Вам необходимо понять, можно ли сделать из данной Вам последовательности красивую перестановкой элементов.
Формат входных данных
В первой строке дано единственное число n ( 1 ≤ n ≤ 10^5 ) Во второй строке дано n чисел— a[1] , a [2] , … , a [n] ( 1 ≤ a[ i] ≤ 10^9 )
Формат выходных данных
В единственной строке выведите «Yes», если это возможно — «No» иначе.

Мой код
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int n,k=0,a[100000];
cin>>n;
for(int i=0;i<n;i++)
cin>>a[i];
k=n/2;
sort(a,a+n);
if(a[n-1-k]!=a[n-k])cout<<"Yes";else cout<<"No";

return 0;
}
Выдает ошибку на 31 тесте подскажите где нужно ее исправить
 #include  
#include
#include
using namespace std;
int main() {
size_t n;
cin >> n;
vector seq(n);
for (auto& x : seq) cin >> x;
sort(seq.begin(), seq.end(), greater());
const auto m = n >> 1;
auto res = seq[m] > seq[m + 1] && seq[m] < seq.front();
if (!res) {
size_t i = 0, j = m;
while (i < m) {
if (seq[i] == seq[j]) break;
++i;
++j;
}
res = i == m;
}
puts(res ? "Yes" : "No");
}
Алексей Зюков
Алексей Зюков
67 945
Лучший ответ
Никита Дроздов можешь пожалуйста сделать полегче решение?)
 #include   
#include

using namespace std;
bool shine(const map& mapa, int num)
{
for (auto i = mapa.rbegin(); i != mapa.rend(); ++i)
{
num -= i->second;
if (!num) return true;
if (num < 0) return false;
}
}

int main()
{
int n;
cin >> n;
map mapa;
auto big_nums = n / 2;
while (n--)
{
int tmp;
cin >> tmp;
++mapa[tmp];
}
cout
Alaettin Dogan
Alaettin Dogan
51 417
n и k не инициализированы и содержат мусор, а вы этими значениями резервируете память, а потом вводите их же. Миллиард - это максимальное и минимальное значение элементов, а не размер массива. С таким r есть выход за пределы . А самое главное - всё остальное нечитабельно, ибо, похоже, вы код поместили туда, где должен изменяться счётчик цикла, скобки друг другу не соответствуют. Исправил ваш код. Второй массив убрал, так как на ходу можно ответ выводить, ведь, судя по примеру, проверяет решение не человек. И да, в таком случае печатать можно только то, что требует тест, строго соблюдая форматирование. Также, не советую большие массивы на стеке заводить.

#include <iostream>

using namespace std;

int main() {
int a[100000], n, k;
cin >> n >> k;

for (int i = 0; i < n; i++)
cin >> a[i];

for (int i = 0; i < k; i++) {
int item;
cin >> item;
int l = 0, r = n, x = 0;

while (l < r) {
x = l + (r - l) / 2;
if (a[x] == item)
break;
else if (a[x] < item)
l = x + 1;
else
r = x;
}
cout << (a[x] == item ? "YES" : "NO") << '\n';
}

}
Никита Дроздов а зачем ввод item если этого не требуется в задаче
#include <iostream>
#include <algorithm>
using namespace std;

int main() {
int n;
cin >> n;
int a[100000];

for (int i = 0; i < n; i++)
cin >> a[i];

sort(a, a + n);

bool possible = true;

for (int i = 0; i < n - 1; i++) {
if (i % 2 == 0) {
if (a[i] <= a[i + 1]) {
possible = false;
break;
}
}
}

if (possible)
cout << "Yes";
else
cout << "No";

return 0;
}
Попробуй так
Никита Дроздов на 1 тесте выдает ошибку
вот тест
Входные данные
5
1 3 5 7 9
Выходные данные
Yes
дай тестирущую систему пожалуйста
Какие задачи решил?
Изменено:
Я только сейчас понял, что это яндекс
Чтобы код читался вставляй его в рамку

 рамка 
Ramazan Benzer
Ramazan Benzer
455