Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 21.09.2024
Сообщений: 18

Расставить температуры в порядке возрастания (сортировка подсчётом)

13.10.2024, 19:41. Показов 890. Ответов 13

Студворк — интернет-сервис помощи студентам
Решаю задачу №41 с сайта acmp.ru (сортировка подсчётом). Нужно писать код именно на С++, так как мы сейчас изучаем именно этот язык и нужно его практиковать в решении разных задач с сайта.


Условие задачи
На планете «Аурон» атмосфера практически отсутствует, поэтому она известна своими перепадами температур в различных точках. Известно, что эти перепады колеблются от -100 до 100 градусов. Нашим специалистам удалось выяснить значения температур в N точках этой планеты. К сожалению, эти значения вычислены с большими погрешностями, поэтому их решили округлить до целых чисел. Хотелось бы наглядно видеть участки с повышенной и пониженной температурой. Вам требуется помочь. Вы должны упорядочить температуры участков по неубыванию.

Входные данные
В первой строке входного файла INPUT.TXT задано натуральное число N - количество участков (N ≤ 106). Во второй строке через пробел записаны целые значения температур этих участков, не превосходящие 100 по абсолютной величине.

Выходные данные
В единственную строку выходного файла OUTPUT.TXT нужно вывести разделенные пробелом значения температур всех известных участков, которые должны следовать друг за другом в порядке неубывания.

Пример вводных данных:
3
9 -20 14
И соответствующих им выходных данных:
-20 9 14


Я написала следующий код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <vector>
using namespace std;
int main()
{
   int i, j, n;
   vector<int> a(200,0);
   cin>>n;
   for (j=0; j<n; j++){
    cin>>i;
    i=i+100;
    a[i]++;
   }
   for (i=0; i<200; i++)
    for (j=0; j<a[i]; j++) cout<<i-100<<" ";
   return 0;
}
Сайт отказывается принимать, на 3 тесте выдаёт wrong answer, хотела бы понять, в чём ошибка
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.10.2024, 19:41
Ответы с готовыми решениями:

Сортировка двухмерного массива по строкам. Расставить строки в порядке возрастания суммы их элементов
Паскаль. Нужно отсортировать двухмерный массив по строкам. Т.е строки выстроить в порядке возрастания. (Нужно посчитать сумму каждой...

Расставить в порядке возрастания
привет, форумчане) возникла такая проблема, что у меня не получается расставить элементы массива в порядке возрастания) надеюсь на вашу...

Расставить столбцы в порядке возрастания
Помогите, пожалуйста решить задачу: в массиве 8 на 8 целого типа, расставить столбцы в порядке возрастания максимальных элементов в них

13
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
13.10.2024, 19:55
Цитата Сообщение от klilia Посмотреть сообщение
по неубыванию
Что же это за евреи такие пишут задания. По возрастанию.

Цитата Сообщение от klilia Посмотреть сообщение
(N ≤ 106)
Точно 106 ?

Добавлено через 3 минуты
Цитата Сообщение от SmallEvil Посмотреть сообщение
Точно 106 ?
Даже если 106, то почему у вас вектор на 200 элементов???
Допустим у вас температура 100, вы добавили ещё 100, и вышли за границу вектора.
1
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6160 / 2851 / 1042
Регистрация: 01.06.2021
Сообщений: 10,402
13.10.2024, 19:55
Цитата Сообщение от SmallEvil Посмотреть сообщение
Что же это за евреи такие пишут задания.
https://dzen.ru/a/ZSM6y-4pkyWDbYVb
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
13.10.2024, 19:58
Royal_X, да я знаю, но каков тут сакральный смысл этого слова? )
0
0 / 0 / 0
Регистрация: 21.09.2024
Сообщений: 18
13.10.2024, 20:04  [ТС]
10^6)) Правда, к сожалению в главном посте уже не получится исправить. А массив, вы сейчас обратили моё внимание, должен быть не на 200 эл-тов, а на 201. А число такое связано с тем, что температура может иметь 201 значение (от -100 до 100 и в том числе, конечно, ноль)
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
13.10.2024, 20:06
Цитата Сообщение от klilia Посмотреть сообщение
температура может иметь 201 значение (от -100 до 100 и в том числе, конечно, ноль)
Вот. Можете если хотите)
0
0 / 0 / 0
Регистрация: 21.09.2024
Сообщений: 18
13.10.2024, 20:09  [ТС]
Я конечно продвинулась благодаря этому с 3 теста до 11, но там у меня теперь Time limit exceeded

У меня там кстати в предыдущем ответе странно формулировка может выглядеть, я просто подумала, что вы вообще не поняли, откуда я взяла число 200, не увидела просто, что вы потом ещё объяснили мне как раз, в чём моя ошибка.
0
Модератор
Эксперт С++
 Аватар для zss
13771 / 10964 / 6491
Регистрация: 18.12.2011
Сообщений: 29,241
13.10.2024, 20:16
Лучший ответ Сообщение было отмечено klilia как решение

Решение

А попробуйте заменить
Цитата Сообщение от klilia Посмотреть сообщение
vector<int> a(200,0);
на
C++
1
int a[201]={};
1
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
13.10.2024, 20:17
Так разве не нужно вывести только все уникальные температуры ?
0
0 / 0 / 0
Регистрация: 21.09.2024
Сообщений: 18
13.10.2024, 20:32  [ТС]
ZSS, к сожалению, на 11 тесте всё равно ошибка tle

Добавлено через 4 минуты
SmallEvil, ну не знаю, мне кажется, что как будто бы фраза "значения температур всех известных участков" подразумевает все температуры, а не только уникальные. Не знаю, можно попробовать конечно убрать повторы, но кажется от tle этим не избавиться

Добавлено через 3 минуты
Я вот так попробовала, но вернулась ошибка (wrong answer) на 3 тесте.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
using namespace std;
int main()
{
   int i, j, n, a[201]={};
   cin>>n;
   for (j=0; j<n; j++){
    cin>>i;
    i=i+100;
    a[i]=1;
   }
   for (i=0; i<201; i++)
    for (j=0; j<a[i]; j++) cout<<i-100<<" ";
   return 0;
}
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
13.10.2024, 20:46
Лучший ответ Сообщение было отмечено klilia как решение

Решение

C++
1
   std::ios::sync_with_stdio(false);
В начале main, решает проблему.
Ну и хидер : #include <cstdio>
1
0 / 0 / 0
Регистрация: 21.09.2024
Сообщений: 18
13.10.2024, 20:48  [ТС]
Ничего себе, сработало, спасибо большое!))
0
Модератор
Эксперт С++
 Аватар для zss
13771 / 10964 / 6491
Регистрация: 18.12.2011
Сообщений: 29,241
13.10.2024, 21:21
SmallEvil, а можно объяснить этот трюк.
Причем тут ввод-вывод?
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6160 / 2851 / 1042
Регистрация: 01.06.2021
Сообщений: 10,402
13.10.2024, 21:23
zss, на acmp.ru глючный валидатор в некоторых задачах. Без std::ios::sync_with_stdio(false); порой выдает ошибку, и наоборот, с этой строкой всё работает. Помню, как я и XLAT голову ломали над одной задачей, а оказалось, что проблема в этой строке, а не в наших кодах.
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.10.2024, 21:23
Помогаю со студенческими работами здесь

Расставить числа в порядке возрастания
Расставить следующие числа в порядке возрастания путем введения массива - множества:

Расставить в порядке возрастания элементы массива.
Здраствуйте уважаемые программисты!не могли бы вы помочь разобратся с задачей: Сформировать массив р из 20 элементов, i – ый элемент...

Расставить элементы массива в порядке возрастания
Не могу найти ошибку. Помогите, пожалуйста. #include &lt;cstdlib&gt; #include &lt;iostream&gt; using namespace std; int main(int argc,...

Ввести предложение, расставить слова в порядке возрастания
Составьте программу, которая запрашивает ввести предложение. А затем сравнивает поэлементно слова и расставляет их в порядке возрастания...

Расставить введённые пользователем числа в порядке возрастания
Нужно на языке C написать код, который будет расставлять введённые пользователем числа в порядке возрастания. #include...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
YAFU@home — распределённые вычисления для математики. На CPU
Programma_Boinc 20.01.2026
YAFU@home — распределённые вычисления для математики. На CPU YAFU@home — это BOINC-проект, который занимается факторизацией больших чисел и исследованием aliquot-последовательностей. Звучит. . .
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru