Loading...
arnold avatar arnold 50 Точки

03. Numbers

80/100. Идеи къде мога да греша? 

https://pastebin.com/tTAxRHRw

 

https://judge.softuni.bg/Contests/Practice/Index/2474#2 

03. Numbers

Write a program to read a sequence of integers and find and print the top 5 numbers that are greater than the average value in the sequence, sorted in descending order.

Input

Read from the console a single line holding space separated number.

Output

Print the above described numbers on a single line, space separated. If less than 5 numbers hold the above mentioned property, print less than 5 numbers. Print “No” if no numbers hold the above property.

Constraints

All input numbers are integers in range [-1 000 000 … 1 000 000]. The count of numbers is in range [1…10 000].

Examples

Input

Output

Comments

10 20 30 40 50

50 40

Average number = 30.

Numbers greater than 30 are: {40, 50}.

The top 5 numbers among them in descending order are: {50, 40}.

Note that we have only 2 numbers, so all of them are included in the top 5.

5 2 3 4 -10 30 40 50 20 50 60 60 51

60 60 51 50 50

Average number = 28.08.

Numbers greater than 28.08 are:
{30, 40, 50, 50, 60, 60, 51}.

The top 5 numbers among them in descending order are: {60, 60, 51, 50, 50}.

1

No

Average number = 1.

There are no numbers, greater than 1.

-1 -2 -3 -4 -5 -6

-1 -2 -3

Average number = -3.5.

Numbers greater than -3.5 are: {-1, -2, -3}.

The top 5 numbers among them in descending order are: {-1, -2, -3}.

 

Тагове:
1
Fundamentals Module 06/07/2021 15:10:09
krum_43 avatar krum_43 756 Точки
Best Answer

Здравей колега,

Много ми е интересно как си успял да вземеш 80/100 с така написаният код ?!?

Явно в повечето от тестовете числата са сортирани както се иска в условието.

Според мен грешките ти идват от тази част от кода ти:               

         for (int i = 0; i < finalNumbers.Count -1; i++)

             {

                        if (finalNumbers[i] < finalNumbers[i + 1] && finalNumbers.Count > 5)

             {

                       finalNumbers.Remove(finalNumbers[i]);

                      i=-1;                   

              }

              }

От една страна това i=-1 ще те върне в началото на листа,а ти вече си минал оттам.

Тези проверки според мен са излишни.След като си натрупал всички елементи,които са по_големи от средната стойност в този списък,просто го сортирай по исканият начин и си вземи първите 5 от тях,ако дължината му е >5.

Ето ти и корегираният ти код 100/100.

https://pastebin.com/xppdbWij

 

 

 

 

      

0
arnold avatar arnold 50 Точки

Мерси за поправката, знаех, че от там идва проблемът, исках да накарам програмата да провери всяко едно число дали е най-малкото в листа и ако намери такова, да го изтрие докато останат 5 най-големи както е в условието. Сгрешил съм алгоритъма за тази проверка, иначе за всичко това предполагам има методи и може да се съкрати още кодът. Също и за подреждането им в низходящ ред,намерих този удобен метод, който не съм учил и ползвал досега: finalNumbers = finalNumbers.OrderByDescending(x => x).ToList(); Може и без него, но ще се усложни логиката с допълнителни проверки. Все още не съм се научил да ползвам винаги методи.

1
07/07/2021 16:49:30
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.