Orivel Orivel
Abrir menu

Ultimas tarefas e discussoes

Explore o conteudo benchmark mais recente de tarefas e discussoes. Filtre por genero para focar no que voce quer comparar.

Generos de Comparacao

Lista de Modelos

Programação

Google Gemini 2.5 Flash VS OpenAI GPT-5.4

Implemente um cache LRU concorrente sem bloqueios

Implemente um cache LRU (Least Recently Used) seguro para uso por múltiplas threads em Python que suporte leituras e gravações concorrentes sem usar um bloqueio global para cada operação. Sua implementação deve satisfazer os seguintes requisitos: 1. **Interface**: O cache deve suportar estas operações: - `__init__(self, capacity: int)` — Inicializar o cache com uma capacidade máxima dada (inteiro positivo). - `get(self, key: str) -> Optional[Any]` — Retornar o valor associado à chave se ela existir (e marcá-la como usada recentemente), ou retornar `None` se a chave não estiver no cache. - `put(self, key: str, value: Any) -> None` — Inserir ou atualizar o par chave-valor. Se o cache exceder a capacidade após a inserção, remover o item menos recentemente usado. - `delete(self, key: str) -> bool` — Remover a chave do cache. Retornar `True` se a chave estava presente, `False` caso contrário. - `keys(self) -> List[str]` — Retornar uma lista de todas as chaves atualmente no cache, ordenadas da mais recentemente usada para a menos recentemente usada. 2. **Concorrência**: O cache deve ser seguro para uso por múltiplas threads ao mesmo tempo. Busque um projeto que permita leituras concorrentes prosseguirem sem bloqueio mútuo quando possível (por exemplo, usando locks de leitura/gravação, bloqueios de granularidade fina ou técnicas sem bloqueio). Um mutex global único que serializa toda operação é considerado uma solução de base, porém subótima. 3. **Corretude sob contenção**: Sob acesso concorrente, o cache nunca deve retornar dados obsoletos ou corrompidos, nunca deve exceder sua capacidade declarada e deve manter uma ordenação LRU consistente. 4. **Casos limite a tratar**: - Capacidade igual a 1 - `put` com uma chave que já existe (deve atualizar o valor e mover para a posição de mais recente) - `delete` de uma chave que não existe - `put` e `get` concorrentes na mesma chave - Evicções sequenciais rápidas quando muitas threads inserem simultaneamente 5. **Testes**: Inclua uma função de teste `run_tests()` que demonstre a correção de todas as operações tanto em cenários single-threaded quanto multi-threaded. O teste multi-threaded deve usar pelo menos 8 threads realizando uma mistura de operações `get`, `put` e `delete` sobre chaves sobrepostas, e deve afirmar que o cache nunca excede a capacidade e que `get` nunca retorna um valor para uma chave que nunca foi inserida. Forneça sua implementação completa em Python. Use apenas a biblioteca padrão (nenhum pacote de terceiros). Inclua docstrings e comentários explicando sua estratégia de concorrência e quaisquer trade-offs de design que você adotou.

22
23 Mar 2026 17:47

Programação

Anthropic Claude Haiku 4.5 VS OpenAI GPT-5.2

Analisador Avançado de Arquivo de Log para um Formato Personalizado

Escreva uma função Python `parse_log(log_content: str) -> list` que analise um arquivo de log com um formato personalizado. A função deve receber o conteúdo do log como uma única string multilinha e retornar uma lista de dicionários, em que cada dicionário representa uma transação concluída com sucesso. **Regras do Formato de Log:** 1. **`START <transaction_id> <timestamp>`**: Marca o início de uma transação. `transaction_id` é uma string sem espaços. `timestamp` é uma string no formato ISO 8601. 2. **`END <transaction_id> <status> <timestamp>`**: Marca o fim de uma transação. O `transaction_id` deve corresponder a uma transação aberta. `status` é uma palavra única (por exemplo, `SUCCESS`, `FAIL`). 3. **`EVENT <key1>=<value1> <key2>="<value with spaces>" ...`**: Representa um evento dentro da transação ativa atual. Consiste em um ou mais pares chave-valor. Valores que contêm espaços devem estar entre aspas duplas. 4. **`COMMENT # <any text>`**: Uma linha de comentário que deve ser ignorada. **Lógica de Processamento:** * A função deve processar as linhas de forma sequencial. * Uma linha `EVENT` está associada à transação iniciada mais recentemente que ainda não foi finalizada. * Uma transação é considerada completa e válida somente se tiver uma linha `START` e uma linha `END` correspondentes com o mesmo `transaction_id`. * A saída deve ser uma lista de dicionários. Cada dicionário representa uma transação concluída e deve ter as seguintes chaves: * `transaction_id` (string) * `start_time` (string) * `end_time` (string) * `status` (string) * `events` (uma lista de dicionários, onde cada dicionário interno representa os pares chave-valor de uma linha `EVENT`). **Tratamento de Erros e Casos de Borda:** * Ignore quaisquer linhas `COMMENT`, linhas em branco ou linhas malformadas que não correspondam aos formatos especificados. * Ignore qualquer `EVENT` que ocorra fora de uma transação ativa (ou seja, antes do primeiro `START` ou após uma transação ter sido fechada). * Se uma nova linha `START` aparecer antes da transação anterior ter sido fechada com um `END`, a transação anterior é considerada "abandonada" e deve ser descartada. A nova linha `START` inicia uma nova transação. * Qualquer transação que permaneça aberta ao final do arquivo de log também é considerada "abandonada" e não deve ser incluída na saída final.

30
23 Mar 2026 08:42

Programação

Google Gemini 2.5 Flash-Lite VS OpenAI GPT-5 mini

Implemente um Limitador de Taxa Concorrente com Janela Deslizante e Filas de Prioridade

Desenhe e implemente um limitador de taxa seguro para threads em Python que suporte as seguintes funcionalidades: 1. **Controle de Taxa com Janela Deslizante**: O limitador deve usar um algoritmo de janela deslizante (não janelas fixas) para rastrear contagens de requisições. Dado um máximo de `max_requests` permitido dentro de um período de tempo `window_seconds`, ele deve determinar com precisão se uma nova requisição é permitida em qualquer momento. 2. **Múltiplos Níveis (Tiers)**: O limitador deve suportar múltiplos níveis nomeados (por exemplo, "free", "standard", "premium"), cada um com sua própria configuração de `max_requests` e `window_seconds`. Clientes são atribuídos a um nível no momento do registro. 3. **Fila de Prioridade para Requisições Adiadas**: Quando uma requisição é limitada pela taxa, em vez de simplesmente rejeitá-la, o limitador deve enfileirá-la em uma fila de prioridade por nível. Cada requisição tem uma prioridade inteira (número menor = maior prioridade). O limitador deve fornecer um método que, quando houver capacidade disponível, desenfileira e processa a requisição em espera de maior prioridade para um determinado cliente. 4. **Segurança para Threads**: Todas as operações (allow_request, enqueue, dequeue, register_client) devem ser seguras para chamadas concorrentes a partir de múltiplas threads. 5. **Limpeza (Cleanup)**: Forneça um método para remover dados de rastreamento expirados para clientes que não fizeram requisições nos últimos `cleanup_threshold_seconds` (configurável). Sua implementação deve incluir: - Uma classe `RateLimiter` com a interface descrita. - Um `Request` dataclass ou named tuple contendo no mínimo: `client_id`, `timestamp`, `priority` e `payload`. - Tratamento adequado de casos de borda: registro duplicado de cliente, requisições para clientes não registrados, filas de prioridade vazias, modificações concorrentes e questões de precisão do relógio. Também escreva um script de demonstração (no bloco `if __name__ == "__main__"`) que: - Crie um limitador de taxa com pelo menos dois níveis. - Registre vários clientes. - Simule um estouro de requisições a partir de múltiplas threads, mostrando algumas sendo permitidas e outras sendo enfileiradas. - Mostre requisições adiadas sendo processadas quando a capacidade for liberada. - Imprima saídas claras mostrando a sequência de eventos. Explique suas escolhas de design em comentários, especialmente a respeito de sua implementação da janela deslizante, sua escolha de primitivas de sincronização e quaisquer trade-offs que você fez entre precisão e desempenho.

39
21 Mar 2026 08:40

Programação

Google Gemini 2.5 Pro VS OpenAI GPT-5.2

Implemente um Limitador de Taxa Concorrente com Janela Deslizante e Filas de Prioridade

Desenhe e implemente um limitador de taxa (rate limiter) thread-safe em Python que suporte as seguintes funcionalidades: 1. **Limitação de Taxa com Janela Deslizante**: Em vez de usar janelas de tempo fixas, implemente um algoritmo de janela verdadeiramente deslizante. Cada cliente (identificado por uma chave string) tem permissão para no máximo `max_requests` requisições dentro de qualquer janela móvel de `window_seconds` segundos. 2. **Níveis de Prioridade**: Cada requisição tem um nível de prioridade (inteiro 1-5, onde 1 é a prioridade mais alta). Quando o limite de taxa é atingido para um cliente, requisições de prioridade mais baixa (número maior) devem ser rejeitadas primeiro. Especificamente, se uma nova requisição com prioridade P chegar e a janela estiver cheia, o limitador deve verificar se existe alguma requisição na janela atual com prioridade estritamente menor (número maior) que P. Se existir, a requisição de prioridade mais baixa (com o maior número) tem seu slot "revogado" e a nova requisição de prioridade mais alta é admitida. A requisição revogada deve ser registrada para que possa ser reportada. Se não houver requisição de prioridade mais baixa para revogar, a nova requisição é rejeitada. 3. **Permissão de Rajada (Burst Allowance)**: Cada cliente pode opcionalmente ter uma permissão de rajada `burst` (por padrão 0). Isto permite até `burst` requisições adicionais além de `max_requests` em uma janela, mas somente se pelo menos metade da duração da janela tiver passado desde a primeira requisição do cliente na janela atual. 4. **Segurança em Threads (Thread Safety)**: O limitador de taxa deve ser seguro para uso a partir de múltiplas threads concorrentemente. Demonstre isto com um cenário de teste. 5. **Estatísticas**: O limitador deve rastrear estatísticas por cliente: total de requisições admitidas, total rejeitadas, total revogadas (removidas por requisições de maior prioridade) e utilização atual da janela (como float de 0.0 a 1.0). Implemente a seguinte interface: ```python class RateLimiter: def __init__(self, max_requests: int, window_seconds: float, default_burst: int = 0): ... def set_client_burst(self, client_id: str, burst: int) -> None: """Override burst allowance for a specific client.""" ... def allow(self, client_id: str, priority: int = 3, timestamp: float = None) -> bool: """ Check if a request is allowed. If timestamp is None, use current time. Returns True if the request is admitted, False if rejected. """ ... def get_stats(self, client_id: str) -> dict: """ Return a dict with keys: 'admitted', 'rejected', 'revoked', 'utilization' """ ... def get_revoked_log(self, client_id: str) -> list: """ Return a list of (timestamp, priority) tuples for revoked requests for the given client, in chronological order. """ ... ``` Forneça uma implementação completa e executável juntamente com um script de demonstração que: - Cria um limiter com max_requests=5, window_seconds=10.0, default_burst=2 - Simula uma sequência de requisições de dois clientes com prioridades e timestamps variados que exercitem todas as funcionalidades (expiração da janela deslizante, revogação por prioridade, ativação da rajada e rejeição) - Imprime as estatísticas e logs de revogação para cada cliente ao final - Inclui um breve teste multithreaded com pelo menos 4 threads fazendo requisições concorrentes Certifique-se de tratar casos de borda tais como: - Validação do valor de prioridade (deve ser 1-5) - Requisições chegando exatamente nas fronteiras da janela - Múltiplas revogações em sequência - Ativação da permissão de rajada precisamente no marco de metade da janela - IDs de cliente vazios ou desconhecidos em consultas de estatísticas

45
19 Mar 2026 14:46

Programação

Google Gemini 2.5 Flash-Lite VS OpenAI GPT-5.2

Implemente um Cache LRU Concorrente Sem Bloqueio Global

Projete e implemente um cache LRU (Least Recently Used — Menos Recentemente Utilizado) com segurança para threads em Python, que suporte leituras e gravações concorrentes sem usar um bloqueio global para cada operação. Sua implementação deve satisfazer os seguintes requisitos: 1. O cache tem uma capacidade máxima fixa especificada no momento da construção. 2. Ele suporta três operações: - get(key): Retorna o valor associado à chave, ou None se a chave não estiver presente. Acessar uma chave deve marcá-la como a mais recentemente usada. - put(key, value): Insere ou atualiza o par chave-valor. Se o cache estiver na capacidade máxima e uma nova chave for inserida, a entrada menos recentemente usada deve ser removida. - delete(key): Remove a chave do cache, se presente. Retorna True se a chave foi encontrada e removida, False caso contrário. 3. O cache deve ser seguro para uso simultâneo por múltiplas threads. Operações get concorrentes em chaves diferentes não devem bloquear umas às outras. Você deve minimizar a contenção — um único bloqueio grosseiro ao redor de tudo não é aceitável. 4. A política de remoção (eviction) deve ser estritamente LRU: a entrada que foi acessada (via get ou put) menos recentemente deve ser a removida. 5. Trate casos-limite: capacidade de 1, puts concorrentes rápidos que disparem remoções, get/put/delete intercalados na mesma chave por diferentes threads, e capacidade zero ou negativa (levantar ValueError). Forneça sua implementação completa como um único módulo Python. Inclua uma breve explicação da sua estratégia de concorrência e por que ela preserva a correção. Inclua também uma demonstração curta (em um bloco main ou função de teste) que crie múltiplas threads executando operações mistas de get/put/delete e que verifique (assert) que o cache nunca excede sua capacidade e que não ocorre corrupção de dados.

59
19 Mar 2026 11:51

Programação

Google Gemini 2.5 Pro VS Anthropic Claude Sonnet 4.6

Implemente um armazenamento chave-valor versionado com consultas históricas

Escreva um código que implemente um armazenamento chave-valor versionado em memória com suporte a leituras históricas. O armazenamento começa vazio e processa uma sequência de comandos. Cada comando mutante bem-sucedido cria exatamente um novo número de versão global, começando em 1. Comandos somente de leitura não devem criar uma versão. Chaves e valores são strings sensíveis a maiúsculas/minúsculas sem espaços. Versões são inteiros positivos. Comandos: SET key value Cria ou sobrescreve a chave com o valor. DELETE key Remove a chave se ela existir. GET key Retorna o valor atual da chave, ou NULL se a chave não existir. GET_VERSION key version Retorna o valor associado à chave imediatamente após a criação da versão global especificada, ou NULL se a chave não existia nessa versão. Se version for maior que a última versão existente, trate-o como inválido e retorne INVALID_VERSION. HISTORY key Retorna todos os estados históricos da chave em ordem crescente de versões, incluindo deleções, formatados como pares version:value separados por vírgulas. Use NULL para estados deletados ou ausentes após uma mutação. Se a chave nunca foi afetada por qualquer comando mutante, retorne EMPTY. Formato de entrada: A primeira linha contém um inteiro N, o número de comandos. As próximas N linhas contêm cada uma um comando. Formato de saída: Para cada comando GET, GET_VERSION e HISTORY, imprima uma linha com o resultado. Detalhes de comportamento e casos limítrofes: - Cada SET sempre cria uma nova versão, mesmo que o valor não tenha mudado. - Cada DELETE sempre cria uma nova versão, mesmo se a chave não existir. - As versões são globais entre todas as chaves, não por chave. - HISTORY de uma chave deve incluir apenas as versões em que essa chave foi diretamente afetada por SET ou DELETE. - Se uma chave foi deletada e depois definida novamente, ambos os eventos devem aparecer em HISTORY. - Eficiência importa: assuma até 200000 comandos, com muitas consultas históricas. Sua solução deve ler da entrada padrão e escrever na saída padrão. Inclua o programa completo funcionando em um único arquivo. Você pode usar qualquer linguagem de programação mainstream, mas o código deve ser completo e executável como está escrito.

59
18 Mar 2026 22:33

Programação

Google Gemini 2.5 Flash VS OpenAI GPT-5.2

Implemente uma Skip List Concorrente Sem Bloqueios com Consultas por Intervalo

Design e implemente uma estrutura de dados skip list concorrente em uma linguagem de sua escolha (C++, Java, Rust, Go ou Python) que suporte as seguintes operações: 1. **insert(key, value)** – Insere um par chave-valor. Se a chave já existir, atualize o valor de forma atômica. Retorna true se uma nova chave foi inserida, false se foi atualizada. 2. **remove(key)** – Remove logicamente o par chave-valor. Retorna true se a chave foi encontrada e removida, false caso contrário. 3. **find(key)** – Retorna o valor associado à chave, ou indica ausência. 4. **range_query(low, high)** – Retorna todos os pares chave-valor onde low <= key <= high, como uma lista ordenada por chave. O resultado deve ser um snapshot consistente: não deve incluir chaves que nunca estiveram simultaneamente presentes durante a execução da operação. 5. **size()** – Retorna o número aproximado de elementos ativos (não deletados). Requisitos e restrições: - A skip list deve ser segura para uso concorrente por múltiplas threads realizando qualquer combinação das operações acima simultaneamente, sem um bloqueio global único. Você pode usar bloqueios de granularidade fina, técnicas sem bloqueio (CAS) ou uma combinação. - Exclusão preguiçosa é aceitável: nós podem ser marcados logicamente como deletados antes da remoção física. - A geração de nível probabilística deve usar uma distribuição geométrica padrão com p=0.5 e nível máximo de 32. - Chaves são inteiros de 64 bits; valores são strings. - Inclua considerações adequadas sobre segurança de memória. Se usar uma linguagem sem coleta de lixo, explique ou implemente sua estratégia de recuperação (por exemplo, recuperação baseada em épocas, hazard pointers). Entregáveis: 1. Código-fonte completo e compilável/executável com comentários explicando sua estratégia de concorrência. 2. Um teste ou demonstração que lance múltiplas threads realizando inserções, exclusões, buscas e consultas por intervalo concorrentes, e valide a correção (por exemplo, sem atualizações perdidas, sem leituras fantasmas em consultas por intervalo, sem travamentos). 3. Uma seção de análise breve (como comentários ou uma docstring) discutindo: - As garantias de linearizabilidade (ou isolamento por snapshot) que sua implementação fornece. - A complexidade de tempo esperada de cada operação. - Limitações conhecidas ou possíveis problemas ABA e como você os aborda. Sua solução será avaliada com base na correção sob concorrência, clareza do código, robustez da estratégia de concorrência, qualidade do mecanismo de snapshot para consultas por intervalo e completude da análise.

57 1
18 Mar 2026 22:05

Programação

Anthropic Claude Sonnet 4.6 VS OpenAI GPT-5.4

Implemente um resolvedor de dependências em Python

Sua tarefa é criar um resolvedor de dependências para um sistema simples de gerenciamento de pacotes. Escreva uma função Python `resolve_dependencies(package_definitions, target_package)` que determine a ordem correta de instalação para um dado pacote e suas dependências. O argumento `package_definitions` é uma lista de strings. Cada string define um pacote e suas dependências diretas no formato: `'PackageName: Dep1, Dep2, ...'`. Se um pacote não tiver dependências, o formato é `'PackageName:'`. Sua função deve: 1. Analisar as strings de entrada para construir um grafo de dependências. 2. Dado um `target_package`, encontrar todas as suas dependências (incluindo transitivas). 3. Retornar uma única lista de strings representando a ordem de instalação. Essa lista deve ser ordenada topologicamente (uma dependência deve sempre aparecer antes do pacote que depende dela). O próprio `target_package` deve ser o último item da lista. A lista não deve conter duplicatas. 4. Detectar dependências circulares. Se um ciclo for encontrado, levante um `ValueError` com uma mensagem que indique claramente o ciclo (por exemplo, 'Dependência circular detectada envolvendo: A -> B -> A'). 5. Detectar pacotes ausentes. Se um pacote lista uma dependência que não está definida em `package_definitions`, levante um `ValueError` com uma mensagem como 'Definição de pacote ausente para: C'.

60
18 Mar 2026 20:21

Programação

OpenAI GPT-5 mini VS Anthropic Claude Sonnet 4.6

Implementar um resolvedor de dependências de pacotes

Escreva uma função Python `resolve(requirements, package_index)` que implemente um algoritmo de resolução de dependências. A função deve receber dois argumentos: 1. `requirements`: Uma lista de strings, onde cada string é um requisito inicial de pacote (por exemplo, `["A>=1.2.0", "B"]`). 2. `package_index`: Um dicionário que representa todos os pacotes disponíveis. As chaves são nomes de pacotes. Os valores são dicionários onde as chaves são strings de versão (por exemplo, '1.2.3') e os valores são listas de strings de requisitos de dependência para essa versão. Sua função deve retornar um dicionário que mapeia cada nome de pacote requerido (incluindo dependências transitivas) para uma única string de versão resolvida que satisfaça todas as restrições. Isto é frequentemente chamado de 'lock file'. Seu algoritmo deve ser capaz de lidar com dependências transitivas e conflitos de versão. Se um conjunto válido de pacotes não puder ser encontrado, a função deve lançar um `ValueError` com uma mensagem clara explicando o conflito. Para simplificar, você pode assumir: - As versões seguem versionamento semântico (por exemplo, '1.2.3'). - Os especificadores de requisito são um dos: `==`, `!=`, `>=`, `<=`, `>`, `<`. Um requisito sem especificador (por exemplo, "B") implica que qualquer versão é aceitável. - Sua solução deve procurar selecionar a versão mais recente possível de cada pacote que satisfaça todas as restrições.

65
15 Mar 2026 08:52

Programação

OpenAI GPT-5 mini VS Anthropic Claude Haiku 4.5

Implemente um resolvedor de dependências com versionamento semântico

Sua tarefa é escrever uma função que simule o resolvedor de dependências de um gerenciador de pacotes. A função deve receber uma lista de todos os pacotes disponíveis, um pacote alvo para instalar e o requisito de versão desse pacote. Ela deve retornar uma lista plana de pacotes (nome e versão específica) que precisam ser instalados, em uma ordem topológica válida (dependências antes dos dependentes). O resolvedor deve lidar com restrições de versionamento semântico (SemVer). Para esta tarefa, você precisa suportar apenas versões exatas, e os especificadores caret (`^`) e til (~) e til (`~`). - `1.2.3`: Deve ser exatamente a versão 1.2.3. - `^1.2.3`: Permite versões de 1.2.3 até, mas não incluindo, 2.0.0 (ou seja, `>=1.2.3 <2.0.0`). - `~1.2.3`: Permite versões de 1.2.3 até, mas não incluindo, 1.3.0 (ou seja, `>=1.2.3 <1.3.0`). Sua implementação deve: 1. Selecionar a maior versão possível de cada pacote que satisfaça todas as restrições impostas a ele por outros pacotes na árvore de dependências. 2. Produzir uma lista topologicamente ordenada de pacotes para instalação. 3. Lidar graciosamente e reportar erros para: - Conflitos de versão não solucionáveis (por exemplo, uma dependência exige `^1.0.0` e outra exige `^2.0.0` do mesmo pacote). - Dependências circulares (por exemplo, o pacote A depende de B, e B depende de A). - Um pacote ou versão exigida não estar disponível. Você pode escolher qualquer linguagem de programação para sua implementação. Defina a assinatura da função e as estruturas de dados conforme achar apropriado, mas deixe-as claras.

82
15 Mar 2026 06:11

Programação

OpenAI GPT-5 mini VS Google Gemini 2.5 Flash-Lite

Implemente um cache LRU (Least Recently Used)

Implemente uma estrutura de dados de cache LRU (Least Recently Used) em Python que suporte as seguintes operações, cada uma com complexidade de tempo média O(1): 1. `get(key)` — Retorna o valor associado à chave se ela existir no cache; caso contrário, retorna -1. Acessar uma chave marca-a como recentemente usada. 2. `put(key, value)` — Insere ou atualiza o par chave-valor. Se o cache atingiu sua capacidade, remova o item menos recentemente usado antes de inserir o novo. Sua implementação deve ser uma classe chamada `LRUCache` com a seguinte interface: ``` cache = LRUCache(capacity) cache.put(key, value) result = cache.get(key) ``` Demonstre sua implementação com a seguinte sequência de teste: ``` cache = LRUCache(2) cache.put(1, 10) cache.put(2, 20) print(cache.get(1)) # Expected: 10 cache.put(3, 30) # Evicts key 2 print(cache.get(2)) # Expected: -1 cache.put(4, 40) # Evicts key 1 print(cache.get(1)) # Expected: -1 print(cache.get(3)) # Expected: 30 print(cache.get(4)) # Expected: 40 ``` Requisitos: - NÃO use `functools.lru_cache` ou `collections.OrderedDict`. Implemente a estrutura subjacente você mesmo. - Use a combinação de um mapa de hash (hash map) e uma lista duplamente ligada (doubly linked list). - Inclua comentários claros explicando sua abordagem. - Trate casos extremos como capacidade igual a 0 ou 1. - Forneça o código completo e executável incluindo a sequência de teste acima com sua saída esperada.

87
12 Mar 2026 19:00

Links relacionados

X f L