Программирование на c++ - Вопросы по С+
  • Чаты 4chT.com в телеграмм
    Наши группы в телеграмм

Вопрос Программирование на c++

Регистрация
8 Дек 2013
Сообщения
94
Репутация
0
Спасибо
0
Монет
0
Вот задача

Дано целое нечетное число n и последовательность a [1] , a [2] , … , a [n] . Назовем последовательность красивой, если для каждого четного i верно, что a − 1 < a > 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;

k=n/2;

sort(a,a+n);

if(a[n-1-k]!=a[n-k])cout<<"Yes";else cout<<"No";



return 0;

}

Выдает ошибку на 31 тесте подскажите где нужно ее исправить
 
Регистрация
6 Авг 2013
Сообщения
91
Репутация
0
Спасибо
0
Монет
0
#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 == seq[j]) break;
++i;
++j;
}
res = i == m;
}
puts(res ? "Yes" : "No");
}
 
Регистрация
15 Авг 2013
Сообщения
76
Репутация
-4
Спасибо
0
Монет
0
n и k не инициализированы и содержат мусор, а вы этими значениями резервируете память, а потом вводите их же. Миллиард - это максимальное и минимальное значение элементов, а не размер массива. С таким r есть выход за пределы . А самое главное - всё остальное нечитабельно, ибо, похоже, вы код поместили туда, где должен изменяться счётчик цикла, скобки друг другу не соответствуют. Исправил ваш код. Второй массив убрал, так как на ходу можно ответ выводить, ведь, судя по примеру, проверяет решение не человек. И да, в таком случае печатать можно только то, что требует тест, строго соблюдая форматирование. Также, не советую большие массивы на стеке заводить.

#include &lt;iostream&gt;

using namespace std;

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

for (int i = 0; i &lt; n; i++)
cin &gt;&gt; a;

for (int i = 0; i &lt; k; i++) {
int item;
cin &gt;&gt; item;
int l = 0, r = n, x = 0;

while (l &lt; r) {
x = l + (r - l) / 2;
if (a[x] == item)
break;
else if (a[x] &lt; item)
l = x + 1;
else
r = x;
}
cout &lt;&lt; (a[x] == item ? &#34;YES&#34; : &#34;NO&#34;) &lt;&lt; &#39;\n&#39;;
}

}
 
Регистрация
26 Май 2013
Сообщения
90
Репутация
0
Спасибо
0
Монет
0
#include &lt;iostream&gt;
#include &lt;algorithm&gt;
using namespace std;

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

for (int i = 0; i &lt; n; i++)
cin &gt;&gt; a;

sort(a, a + n);

bool possible = true;

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

if (possible)
cout &lt;&lt; &#34;Yes&#34;;
else
cout &lt;&lt; &#34;No&#34;;

return 0;
}
Попробуй так
 
Регистрация
8 Дек 2013
Сообщения
61
Репутация
0
Спасибо
0
Монет
0
дай тестирущую систему пожалуйста
Какие задачи решил?
Изменено:
Я только сейчас понял, что это яндекс
Чтобы код читался вставляй его в рамку

рамка
 
Сверху Снизу