LINQ и ЕГЭ - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Решил одну задачу и дабы не городить кучу условий использовал LINQ, и тут встал вопрос, пройдет ли данный алгоритм все условия задачи(эффективность по памяти и времени)? Тянет ли моё решение на все 4 балла?
В телевизионном танцевальном марафоне с определением победителя с помощью телезрителей после каждого тура объявляется sms-голосование, в котором зрители указывают наиболее понравившуюся им пару из максимум 16 пар, которые участвуют в проекте. Вам предлагается написать программу, которая будет обрабатывать результаты sms-голосования по данному вопросу. Результаты голосования получены в виде номеров пар (каждый элемент списка соответствует одному sms-сообщению). Имеется набор данных, состоящий из целых чисел. Набор может быть очень большим. Напишите программу для решения этой задачи. Постарайтесь сделать программу эффективной по времени и используемой памяти (или хотя бы по одной из этих характеристик). Программа считается эффективной по времени, если время работы программы пропорционально количеству пар чисел N, т. е. при увеличении N в k раз время работы программы должно увеличиваться не более чем в k раз. Программа считается эффективной по памяти, если размер памяти, использованной в программе для хранения данных, не зависит от числа N и не превышает 1 килобайта. Максимальная оценка за правильную программу, эффективную по времени и памяти, — 4 балла. Максимальная оценка за правильную программу, эффективную по времени, но неэффективную по памяти, — 3 балла. Следует учитывать, что количество голосов в списке может быть очень велико. Перед текстом программы кратко опишите используемый Вами алгоритм решения задачи. На вход программе в первой строке подаётся количество пришедших sms-сообщений N. В каждой из последующих N строк записан номер пары от 1 до 16.Пример входных данных: 4 2 16 3 2 Программа должна вывести список всех пар, встречающихся в списке, в порядке убывания (невозрастания) количества голосов, отданных за ту или иную пару, с указанием количества отданных за неё голосов. При этом каждая пара должна быть выведена ровно один раз вне зависимости от того, сколько раз она встречается в списке. Пример выходных данных для приведённого выше примера входных данных: 2 2 3 1 16 1
using System;
using System.Linq;
using System.Collections.Generic;
 
public class Program
{
    public static void Main(String[] args)
    {
        List<Int16> Virables = new List<Int16>();
 
        for (Int32 i = Int32.Parse(Console.ReadLine()); i > 0; i--)
            Virables.Add(Int16.Parse(Console.ReadLine()));
 
        foreach (var Line in from g in Virables
                             group g by g into ng
                             orderby ng.Key
                             select new
                             {
                                 Count = ng.Count(),
                                 Key = ng.Key
                             })
            Console.WriteLine("{0} {1}", Line.Key, Line.Count);
    }
}
Благодарю за ответ!

Решение задачи: «LINQ и ЕГЭ»

textual
Листинг программы
var counters = new int[16];

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4 из 5