LINQ: Análise de fluxo de dados com agrupamento e filtragem por janela deslizante

C# Hard LINQ

Tarefa «LINQ: Análise de fluxo de dados com agrupamento e filtragem por janela deslizante»

Escreva um programa em C# que leia uma sequência de números inteiros (pelo menos 10). Usando LINQ, realize a análise: agrupe os números por valor, mantendo apenas os grupos onde a quantidade de elementos é maior que 1. Em seguida, para cada grupo, calcule a média aritmética de todos os elementos que estão em uma janela deslizante de tamanho 3 (ou seja, para cada trio de elementos consecutivos na sequência original, onde pelo menos um elemento pertence ao grupo). Se a janela contiver pelo menos um elemento do grupo, adicione sua média ao resultado. Exiba as médias ordenadas em ordem decrescente com precisão de duas casas decimais. Se não houver janelas adequadas, exiba "No data".

Formato de Entrada

Na primeira linha, um número inteiro N (10 ≤ N ≤ 1000). Em seguida, N linhas, cada uma contendo um número inteiro.

Formato de Saída

Uma linha com números separados por espaço, cada um com duas casas decimais, ordenados em ordem decrescente. Ou "No data".

Exemplos

Exemplo 1

ENTRADA
12 1 2 2 3 4 4 5 6 6 7 8 8
SAÍDA
7.67 7.00 6.33 5.67 5.00 4.33 3.67 3.00 2.33 1.67

Exemplo 2

ENTRADA
3 1 2 3
SAÍDA
No data
main.cs