Executando verificação de segurança...
3

O enunciado é meio confuso, mas depois de alguns minutos não é tão difícil entender. Ele basicamente descreve que tem dois tipos de operações (que ele chamou de "queries"). Ambas estão no formato 1 x y ou 2 x y, ou seja, o primeiro número pode ser 1 ou 2, e os dois números seguintes serão os valores de x e y.

Depois ele descreve o que fazer com cada operação: se for 1, faça tais operações, se for 2, faça outras. Ele usa um símbolo estranho (se não me engano é esse: ⨁) para indicar a operação XOR, e descreve em detalhes o algoritmo. Em resumo:

  • criar um array arr de 2 dimensões (no caso do C#, ele usou List, mas a ideia é a mesma). A lista tem n sublistas
  • inicialize lastAnswer com zero
  • se a query for 1:
    • faça idx ser igual a (x ^ lastAnswer) % n
    • adicione y na lista que está na posição idx do array arr
  • se a query for 2:
    • faça idx ser igual a (x ^ lastAnswer) % n
    • faça lastAnswer ser igual a arr[idx][y % arr[idx].Count]
    • adicione lastAnswer no array de respostas (que é o que o método dynamicArray vai retornar no final)

Traduzindo para código, ficaria assim:

public static List<int> dynamicArray(int n, List<List<int>> queries)
{
    List<List<int>> arr = Enumerable.Range(0, n).Select(i => new List<int>()).ToList();
    List<int> answers = new List<int>();
    int lastAnswer = 0;
    foreach (var q in queries)
    {
        var x = q[1];
        var y = q[2];
        if (q[0] == 1)
        {
            arr[(x ^ lastAnswer) % n].Add(y);
        }
        else if (q[0] == 2)
        {
            var idx = (x ^ lastAnswer) % n;
            lastAnswer = arr[idx][y % arr[idx].Count];
            answers.Add(lastAnswer);
        }
    }
    return answers;
}

Acabei de mandar lá e passou.

Carregando publicação patrocinada...
1