Проблем при Здарача 06. Courses
Колеги, дава ми 20/100 с тайм-кръш и съобщения за неверни отговори. На предварителните проверки кода ми дава верни отговори
Задачата:
6.Courses
Write a program, which keeps information about courses. Each course has a name and registered students.
You will receive course name and student name, until you receive the command "end". Check if such course already exists, and if not, add the course. Register the user into the course. When you do receive the command "end", print the courses with their names and total registered users, ordered by the count of registered users in descending order. For each contest print registered users ordered by name in ascending order.
Input
- Until you receive "end", the input come in the format: "{courseName} : {studentName}".
- The product data is always delimited by " : ".
Output
- Print information about each course, following the format:
"{courseName}: {registeredStudents}" - Print information about each student, following the format:
"-- {studentName}"
Examples
Input
Output
Programming Fundamentals : John Smith
Programming Fundamentals : Linda Johnson
JS Core : Will Wilson
Java Advanced : Harrison White
end
Programming Fundamentals: 2
-- John Smith
-- Linda Johnson
JS Core: 1
-- Will Wilson
Java Advanced: 1
-- Harrison White
Algorithms : Jay Moore
Programming Basics : Martin Taylor
Python Fundamentals : John Anderson
Python Fundamentals : Andrew Robinson
Algorithms : Bob Jackson
Python Fundamentals : Clark Lewis
end
Python Fundamentals: 3
-- Andrew Robinson
-- Clark Lewis
-- John Anderson
Algorithms: 2
-- Bob Jackson
-- Jay Moore
Programming Basics: 1
-- Martin Taylor
Моето решение:using System;
using System.Collections.Generic;
using System.Linq;
public class Program
{
public static void Main()
{
string inputPrim = "";
var listOfCours = new Dictionary<string, List<string>>();
while ((inputPrim = Console.ReadLine()) != "end")
{
var input = inputPrim
.Split(':')
.Select(x => x.Trim())
.ToArray();
if (!listOfCours.ContainsKey(input[0]))
{
listOfCours[input[0]] = new List<string>();
}
listOfCours[input[0]].Add(input[1]);
} // end while
listOfCours = listOfCours
.OrderByDescending(x => x.Value.Count)
.ThenByDescending(x => x.Key)
.ToDictionary(x => x.Key,
x => x.Value);
foreach (var kvp in listOfCours)
{
Console.WriteLine("{0}: {1}", kvp.Key, kvp.Value.Count);
var orderlistMembers = kvp.Value
.OrderBy(x => x)
.ToList();
for (int i = 0; i < kvp.Value.Count; i++)
{
Console.WriteLine("-- {0}", orderlistMembers[i]);
}
} // end foreach for rezult
}
}// Programming Fundamentals : John Smith
// Programming Fundamentals : Linda Johnson
// JS Core : Will Wilson
// Java Advanced : Harrison White
// end
//Programming Fundamentals: 2
//-- John Smith
//-- Linda Johnson
//JS Core: 1
//-- Will Wilson
//Java Advanced: 1
//-- Harrison White// Algorithms : Jay Moore
// Programming Basics : Martin Taylor
// Python Fundamentals : John Anderson
// Python Fundamentals : Andrew Robinson
// Algorithms : Bob Jackson
// Python Fundamentals : Clark Lewis
// end
//Python Fundamentals: 3
//-- Andrew Robinson
//-- Clark Lewis
//-- John Anderson
//Algorithms: 2
//-- Bob Jackson
//-- Jay Moore
//Programming Basics: 1
//-- Martin Taylor
Сега дава 100/100. Мерси за помощта. :)
П.П. И все пак, първоначалния код работи. Дава верни отговори на примерните въпроси, както и с произволно избрани стойности. В Джъджа отчита и верни, и неверни отговори. Как мога да разбера къде и кога точно се чупи кода, както съм го написал?
Сега като тествам кода ти ми дава само "Incorrect answer", няма "Time limit". Може би вчера е имало някакъв проблем с Judge. Ако махнеш сортировката ".ThenByDescending(x => x.Key)" дава 100 точки. В условието никъде не е казано, че трябва имената на курсовете да се сортират. Тоест ако имаш примерно 3 курса с еднакъв брой студенти, трябва да ги принтираш по реда, в който са ти подадени. Пример:
При вход:
Algorithms : Jay Moore
Programming Basics : Martin Taylor
Python Fundamentals : John Anderson
end
Изход:
Algorithms: 1
-- Jay Moore
Programming Basics: 1
-- Martin Taylor
Python Fundamentals: 1
-- John Anderson
В твоя случай първо ще принтира "Python Fundamentals: 1..", после "Programming Basics: 1..." и накрая "Algorithms: 1..."
Благодаря много.