Loading...
dimitar90 avatar dimitar90 13 Точки

Programming basic exam task 2

Здравейте ,

преди известно време се бях пробвал във Programming Basic и ми остана малко да го взема,не бях достатъно подготвен.

Та в момента се упражнявам отново и имам проблем с една задача и много ще съм благодарен ако някой ми даде съвет защо не минавам judge-a.

Това ми е заданието: 

 

Write a program to calculate points for all players and find who the winner is. You will be given the count of the players, their names and initial scores. Score for every player depends on his name. To the player score add or subtract the ASCII code of each letter. If ASCII code is even add it to the score. If is oddsubtract it from the score. Find the one with highest score and print his name and score on the console. If two or more players are with same pointsthe winner is the first one.

Input

On the first input line you will be given number N - the count of players.

On the next 2*N lines you will be given player name and hi initial score.

Output

The output should be printed on the console and consist the name of the winner and his score in the following format:

“The winner is {name} - {points} points”

Constraints

  • N – the count of players will be a positive integer in the range [1...100]
  • Names will be strings with length between 3 and 30
  • The score for each player will be a integer in the range [-100,000...100,000]

Examples

Input

Output

Comments

3

Bojidar

123

Preslav

123

Pesho

123

The winner is Preslav - 230 points

B(66)o(111)j(106)i(105)d(100)a(97)r(114) Initial points 123 scores

123 +66 -111 +106 -105 +100 -97 +114 = 196

 

P(80)r(114)e(101)s(115)l(108)a(97)v(118)

Initial points 123 scores

123 +80 +114 -101 -115 +108 -97 +118 = 230

 

P(80)e(101)s(115)h(104)o(111)

Initial points 123 scores

123 +80 -101 -115 +104 -111 = -20

 

Preslav(230) > Bojidar(196) > Pesho(-20)

Write a program to calculate points for all players and find who the winner is. You will be given the count of the players, their names and initial scores. Score for every player depends on his name. To the player score add or subtract the ASCII code of each letter. If ASCII code is even add it to the score. If is oddsubtract it from the score. Find the one with highest score and print his name and score on the console. If two or more players are with same pointsthe winner is the first one.

Input

On the first input line you will be given number N - the count of players.

On the next 2*N lines you will be given player name and hi initial score.

Output

The output should be printed on the console and consist the name of the winner and his score in the following format:

“The winner is {name} - {points} points”

Constraints

  • N – the count of players will be a positive integer in the range [1...100]
  • Names will be strings with length between 3 and 30
  • The score for each player will be a integer in the range [-100,000...100,000]

Examples

Input

Output

Comments

3

Bojidar

123

Preslav

123

Pesho

123

The winner is Preslav - 230 points

B(66)o(111)j(106)i(105)d(100)a(97)r(114) Initial points 123 scores

123 +66 -111 +106 -105 +100 -97 +114 = 196

 

P(80)r(114)e(101)s(115)l(108)a(97)v(118)

Initial points 123 scores

123 +80 +114 -101 -115 +108 -97 +118 = 230

 

P(80)e(101)s(115)h(104)o(111)

Initial points 123 scores

123 +80 -101 -115 +104 -111 = -20

 

Preslav(230) > Bojidar(196) > Pesho(-20)

 

ето и года ми  :

http://pastebin.com/FkCgeXmB

Тагове:
0
Programming Fundamentals
AntyfrizZz avatar AntyfrizZz 238 Точки

Здравей,

 

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

Подходът ти към задачата е доста грешен. Изчислението на точките на играчите е наред, но след него нещата се попрецакват малко. Заделил си памет за Dictionary, в което блъскаш играчите с техните точки. После заделяш памет за 2 List-а, които нямат нищо общо един с друг. Обхождаш речника, за да напълниш листовете. След това обходаш листовете, за да принтираш (Max() ги обхожда за да намери най - голямата стойност). От листа с точките ще вземеш максималната стойност, но никой не ти гарантира, че това, което ще вземеш от листа с имената като Max() ще отговаря на името с мак точките. Реално 2та листа и речника са излишни.

Как бих подходил аз. Заделям памет за име и за точки. След всяко изчисление на точките на даден човек, проверявам дали изчислените точки не са по - големи от най - големите до момента. Ако са - сетвам името да е равно на текущото име и точките да са равни на текущите точки. След като свърши въвеждането на инпута ще имам резултата веднага и няма да ми се налага да обхождам речници и листове, за да го намеря.

 

Поздрави!

0
dimitar90 avatar dimitar90 13 Точки

вече блокирах.може ли да пуснеш код?

0
AntyfrizZz avatar AntyfrizZz 238 Точки

Здравей,

 

string name = string.Empty;

int maxScore;

for 0 to playersCount

    string currentName = 

    int initialScore =

    int currentScore = ...

    if (currentScore > maxScore)

        maxScore = currentScore;

        name = currentName

 

Не ти правя голяма услуга като ти пиша кода. Опитай следващия път да го измислиш сам.

 

Поздрави!

0
dimitar90 avatar dimitar90 13 Точки

мерси бро,направих я снощи с два масива.

0
dimitar90 avatar dimitar90 13 Точки

твоето решение ми даде 80 точки моето 60.Много съм доволен,благодаря

 

0
AntyfrizZz avatar AntyfrizZz 238 Точки

Здравей,

 

Как с 2 масива? И защо се задоволи с 80 точки :Д

0
16/08/2016 01:09:49
dimitar90 avatar dimitar90 13 Точки

в чужбина съм и нямам мн време да решавам.За времето което имам 80 точки ми бяха задоволително.Ще се пробвам днес или утре да я направя за 100,но не успях вчера..

0
dimitar90 avatar dimitar90 13 Точки

http://pastebin.com/PgEucBWr с масиви.

http://pastebin.com/DWyXxQ6R без масиви

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