FAQs PROBLEMS

Tem alguma dúvida sobre o URI Online Judge? Aqui você pode encontrar as respostas!

  • Como faço para enviar problemas de minha autoria para o portal?

    Primeiro, siga os passos abaixo:

    • Formate seu problema no URI Online Judge Builder (https://www.urionlinejudge.com.br/builder/);
    • O título deve estar em CamelCase (primeira letra de cada palavra deve ser maiúscula);
    • Variáveis devem estar em negrito em todo o texto;
    • Devem haver duas versões da descrição, uma em Português e outra em Inglês (Espanhol é opcional). Sem uma dessas duas versões, seu problema não será publicado até ser traduzido para uma ou outra linguagem;
    • Faça download dos arquivos gerados.

    Depois disso, você deve criar os arquivos de entrada e saída e uma solução (em C or C ++) que deva receber "Accepted".

    • Entradas são arquivos com nome xxx-a.in, onde xxx é o nome do problema (se mais arquivos são necessárias, você deve seguir a nomenclatura xxx-b.in e assim por diante);
    • As saída são arquivos com nome xxx-a.sol (mesmas regras dos arquivos de saída, somente com uma extensão diferente);
    • Devem ser formulados pelo menos 10 casos de teste;
    • Cada arquivo não pode ultrapassar 10MB

    Se você, como autor, quiser limitar a abordagem de solução que deve ser adotada para o problema (por exemplo, quer que passe uma solução n.log2n mas não quer que passe uma solução n2 ou n3) deverá então enviar uma segunda solução que deverá receber “Time Limit Exceeded” com o tempo fornecido para o problema, para podermos testar se o tempo limite definido está correto e fazermos os ajustes necessários. Lembre-se de testar os casos de borda do problema.

    Todos esses arquivos devem ser adicionados numa pasta que deve ser encaminhada para portal@urionlinejudge.com.br com o assunto [New Problem] - Nome do seu problema. Todos os problemas passam por uma verificação antes de serem adicionados ao nosso repositório, e as adições de novos problemas são feitas somente nas segundas-feiras.

  • Posso sugerir problemas de outras fontes?

    Sim, desde que haja uma autorização explícita do autor para utilizar o seu problema no portal URI Online Judge. Mesmo assim, o problema deverá ser formatado no Builder ((https://www.urionlinejudge.com.br/builder/).

  • Estou encontrando dificuldades/dúvidas com um problema. Onde posso encontrar ajuda?

    Infelizmente não dispomos de tempo para auxiliar, através do canal de feedbacks, os nossos usuários a encontrarem erros em seus códigos. Mas o portal URI Online Judge possui seu próprio Fórum (urionlinejudge.com.br/forum) aonde você encontrará tópicos de discussão de todos os problemas do portal e poderá postar suas dúvidas.

  • Encontrei um erro na descrição ou I/Os de um problema. Como contato a equipe sobre isso?

    Para contatar sobre um erro na descrição de um problema ou relatar algum provável erro de entrada e saída, você pode entrar em contato com a gente através da página de feedbacks, colocando como título da sua mensagem “Erro na descrição do problema XXXX” ou “Provável erro nos arquivos do problema XXXX”.

  • O que é uma entrada que termina em EOF?

    Neste tipo de entrada não é especificada a quantidade de casos de teste. Pode ser 1,2 ou mais de 1 milhão.

    Normalmente um arquivo de entrada com três casos de teste poderia ser assim:

    7123
    32
    125
    

    Em C++, esta leitura pode ser resolvida da seguinte forma:

    int N;
    while (cin >> N) {
       ...
    }
    

    Em Python, esta leitura pode ser resolvida da seguinte forma:

    while True:
        try:
            ...
        except EOFError:
            break
    

    Em C#, esta leitura pode ser resolvida da seguinte forma:

    using System;
    
        class URI {
    
            static void Main(string[] args) {
    
                string line;
    
                while ((line = System.Console.ReadLine()) != null) {
                    ...
                }
    
            }
    
        }
    

    Em Java, esta leitura pode ser resolvida da seguinte forma:

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
     
    public class Main {
        public static void main(String[] args) throws IOException {
            InputStreamReader ir = new InputStreamReader(System.in);
            BufferedReader in = new BufferedReader(ir);
           
            while(in.ready()) {
                String str = in.readLine();
            }
        }    
    }
    

    Isto significa que enquanto houver valores inteiros no arquivo de entrada, eles serão lidos para a variável N.

  • Time Limit em Java

    Se você recebeu time limit em Java, verifique se a sua solução está utilizando métodos mais otimizados de entrada e saída. Como os casos de teste podem ser grandes, utilizar Scanner e System.out fará com que a sua solução receba "Time Limit Exceeded". Apenas os problemas Beginner irão aceitar soluções com métodos de entrada mais lento.

  • SE O MEU CÓDIGO RECEBE TLE, QUER DIZER QUE ELE ESTÁ CORRETO MAS DEMORA MUITO?

    Não, TLE (Time Limit Exceeded) quer dizer que a sua solução extrapolou o tempo limite definido. Seu programa não terminou de executar no tempo pré-determinado, por isso foi interrompido. Desta forma não é possível dizer se o código estava ou não correto.

  • EU CONTINUO RECEBENDO "WRONG ANSWER"! O QUE ESTÁ ERRADO?

    Se você continua recebendo "Wrong Answer" e acredita que sua solução está correta, por favor, verifique se o seu código fonte:

    • Não está imprimindo nada a mais do que requisitado pela descrição do problema, como mensagens de leitura ("Digite x:");
    • Está imprimindo o último valor, seguido de final de linha ("\n");
  • Erro em cálculo simples utilizando ponto flutuante.

    Experimente trocar a variável de float para double. Às vezes o erro se dá apenas pela precisão da variável.

  • Números em casas decimais

    Em C++, esta é uma das formas possíveis para formatar um valor com 5 dígitos após o ponto decimal:

    #include <iomanip>

    No programa principal, pode ser na primeira linha, utilize:

    cout << fixed << setprecision(5);
  • O que é o uDebug? Como posso utilizá-lo na resolução dos problemas?

    O uDebug é uma plataforma para você verificar se a forma como resolveu um determinado problema está correta. Para isso, basta que você resolva o problema e compile seu código com uma determinada entrada e copie a saída gerada. Na página do problema no uDebug, basta que você cole a entrada e a saída por você testadas localmente, e o site irá retornar se sua saída está correta ou não de acordo com as exigências do problema.