Професионална програма
Loading...
+ Нов въпрос
Abraxas avatar Abraxas 47 Точки

[Exam Problems] Advanced C# 11 October 2015 - Srabsko Unleashed - Правилни резултати като на тестовете, 50 точки в judge

Здравейте, колеги. Почнах да решавам изпита по Advanced C# от 11 октомври 2015 и на четвърта задача джъджа ми дава грешен резултат на тестове 2,3,4,7 и 9. Понеже имаше качени всички тестове, проверих кое му е различното на изхода и нямаше никаква разлика. Използвах и сайт за проверяване на разлики в текст и пак никаква разлика. Пробвах пак, но все дава 50. Ето го кодът: http://pastebin.com/up1H2Hw0

Ако някой може да ми каже къде е проблема, ще му бъда благодарен!

Поздрави!

Abraxas

Тагове:
0
C# Advanced 27/02/2016 22:41:19
Filkolev avatar Filkolev 4482 Точки
Best Answer

От документацията на метода за сортиране, който ползваш, List<T>.Sort(): "This implementation performs an unstable sort; that is, if two elements are equal, their order might not be preserved."

По условие трябва да запазиш реда на изхода ако двама изпълнители имат еднакви приходи. Т.е. трябва ти стабилно сортиране. Един вариант е да го направиш функционално с Enumerable.OrderBy(), за който в Remarks секцията пише: "This method performs a stable sort; that is, if the keys of two elements are equal, the order of the elements is preserved."

Фактът, че при теб (и при мен всъщност) поредността е такава, каквато се иска, не е гарантиран. И точно това е проблемът в Judge. Каква точно е причината не мога да кажа.

2
Abraxas avatar Abraxas 47 Точки

100/100!

Благодаря много!

0
LardaX avatar LardaX 15 Точки

Здрасти, мога ли да помоля за малко помощ ако имаш нерви да прочетеш кода дето съм сътворил. При сортирането си ползвах .OrderByDescending, променливите ги пробвах с int, после с long, double, дори decimal, но judge упорито ми дава 70 / 100...мислех, мислех, но наистина нямам идея, защо е така. Ейто го кода ми:
http://pastebin.com/7RPDVTXi

-----

Отговорих си на въпроса...не случайно условията трябва да се четат внимателно...

SKIP THOSE: Ceca@Belgrade125 12378, Ceca @Belgrade12312 123

0
10/10/2016 17:16:43
LardaX avatar LardaX 15 Точки

Оправих си решението ама нещо много if-ове много нещо....работи, но не е най-прегледния код, който съм писал.

http://pastebin.com/R0GTsDnj

0
Pazzo avatar Pazzo 159 Точки

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

може ли някой да ми помогне и да посочи къде ми е грешката в решението на тази задача?

Джъдж ми дава 70/100, гърми на 4, 5 и 7 тест, дава Runtime error.

Разглеждах си решението, но не мога да намеря къде греша. Реших да пробвам с long вместо int - не е това проблема, а и не би трябвало да бъде, след кат според Constraints не би трябвало речника да държи число по-голямо от 1 000 000 000 (100000 * 200 * 50).

Пробвах и различни грешни инпути - не ми гърми... Не мога да измисля какви ли ще да са тези тестове...

Разглеждах и други решения естествено, но ще бъда много благодарен, ако някой успее да ми посочи проблема в моето решение ;)

 

Edit: Добавих един куп грозни проверки дали входът е съвсем както трябва. В резултат джъдж-а си промени малко мнението: пак ми дава 70/100, но вече не гърми с Runtime error, а с Incorrect answer. Някакви идеи?

0
06/06/2017 14:13:02
Stanislav.Petrov avatar Stanislav.Petrov 12 Точки

Прочети си условието!

Там има дадени условия за проверка на входа.

Изрично е дадено: 

SKIP THOSE: Ceca@Belgrade125 12378, Ceca @Belgrade12312 123 , 

Ceca@Belgrade 125 12378,

Ceca @Sunny Beach Beach Beach 35 3500, Ceca Ceca Ceca Ceca @Sunny Beach 35 3500 //The singer and town name may consist of one to three words.

При теб това не се проверява и judge-a ти гърми, защото запаметяваш някои от тях.

Предполагам, че има и по-красив код за решаване на задачата, но слагам и моето решение, което работи:

https://pastebin.com/B2XJhZf9

0
Pazzo avatar Pazzo 159 Точки

Благодаря за насоката.

Наистина нямах проверки за това, дали името или мястото не са повече от 3 думи. Иначе за тези изброени в "skip those" бях направил. Добавих и това, което ме посъветва, разгледах и кода ти, дори добавих в моя няколко други елемента от твоя код, но отново не минава. Пак ми дава 70 / 100.
Не мога да измисля вече какво би могло да е грешно....

0
Stanislav.Petrov avatar Stanislav.Petrov 12 Точки

Труден ти е кода за четене!

Имаш излишни редове код и излишни проверки.

Не си си направил труда да провериш изключенията , за които ти писах (Lepa Brena@Sunny Beach 25 3500 / Ceca@Belgrade 125 12378 - това трябва да го skip-ва).

Оправи си го.

0
lapd87 avatar lapd87 103 Точки

за всички бъдещи поколения и тези които искат да си оправят кода като махнат грозните проверки сложете в whail един try-catch с четене на вход и continue:

.........вашият четящ код..........

while ( input != "End" )   {

                                     try  { ...... вашият работещ код без проверки ....... ..  }

                                           catch ( Exception ) { input = Console.ReadLine();

                                                                              continue; }

                                         }

.......вашият печатащ код......

 

 

0
15/10/2017 18:41:06
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.