TOPIC

PROBLEM 1609 - URI Fórum 1.0

URI Online Judge asked 6 years ago

URI Online Judge Fórum 1.0

MOD

This topic was solved and cannot recieve new replies.

  • Mateus Melo replied 5 years ago

    Seu código não roda no meu pc. Você está alocando um vetor muito grande. Sem falar que se seu código passasse você receberia time limit exceeded. Um computador faz cer de 1 milhão de interações por segundo. Nessa questão seu código teria que fazer 100 * 1000000001 de interações!. Tente resolver de outro jeito.

  • Mateus Melo replied 5 years ago

    Eu resolvi essa questão com map do c++. Também dar para resolver com set.

  • João Paulo França replied 5 years ago

    Alguém pode indicar o erro, está dando wrong answer 20%. ja pensei bastante, mas não consegui ver o possível erro.

    #include<stdio.h>
    #include<string.h>
    int main(){
        int n,i,j,k;
        long long int m,resul,cont;
        scanf("%d",&n);
        for(i=0;i<n;i++){
            cont=0,resul=0;
            scanf("%lld",&m);
            long long int vet[m],vet1[m];
            for(j=0,k=0;j<m,k<m;j++,k++){
                scanf("%lld",&vet[j]);
                vet1[k] = vet[j];
            }
            for(j=0;j<m;j++){
                for(k=0;k<j;k++){
                    if(vet1[k] == vet[j]){
                        cont++;
                    }
                }
            }
            resul = m - cont;
            printf("%lld\n",resul);
        }
    }
  • Thalyson Nepomuceno replied 5 years ago

    vc ta limpando 1000, de 0 a 999, além disso, acho q é mais fácil fazer com um vetor booleano, ai nem vez de ficar somando, só recebe true, assim é só percorrer o vetor e saber quantos estão verdadeiro :D

  • Marco Antônio Ferreira Birck replied 5 years ago

    WA 20% :/ não faço idéa do que esteja errado...

    Resolvido

    Obrigado pelas dicas...

  • Nayra Oliveira replied 6 years ago

    Meu código dá Runtime error :/ Alguém poderia me ajudar?

    Desde já agradeço :)

    #include<stdio.h>
    #include<stdlib.h>
    
    int main(){
    
        int ct, i, j, n, c, *v, cont = 0;
    
        scanf("%d", &ct);
        v = (int*)malloc(1000000001 * sizeof(int));
    
        for(i = 0; i < ct; i++){
    
            for(j = 0; j < 1000000001; j++){
                v[j] = 0;
            }
    
            scanf("%d", &n);
            for(j = 0; j < n; j++){
                scanf("%d", &c);
                if(v[c] == 1){
                    continue;
                }else{
                    v[c] = 1;
                    cont++;
                }
            }
            printf("%d\n", cont);
    
            cont = 0;
        }   
        free(v);
        return 0;
    }
  • Matheus replied 6 years ago

    Podem me ajudar? Estou recebendo runtime error

    import java.io.*;
    import java.util.*;
    
    public class Main
    {
        public static void main(String[] args) throws IOException, NumberFormatException
        {
    
            //String teste ="3\n3\n1 2 3\n3\n1 2 1\n5\n100 1 1 0 0\n";
            Scanner s = new Scanner(System.in);
            int n = Integer.parseInt(s.nextLine());
    
            for(int i=0;i<n;i++)
            {
                int t = Integer.parseInt(s.nextLine());
                String[] strs = s.nextLine().split(" ");
                List<Integer> l = new ArrayList<Integer>();
                for (int j = 0; j<t;j++)
                {
                    int v = Integer.parseInt( strs[j]);
                    if (!l.contains(v))
                        l.add(v);
                }
                System.out.println(l.size());
    
            }
    
        }
    }
  • Igor Ribeiro Barbosa Duarte replied 6 years ago

    Estou recebendo time limit exceeded nesse código:

    #include <stdio.h>
    #include <string.h>
    #include <math.h>
    #include <stdlib.h>
    
    int main(){
        int qtd, c, i, vetor[10008], j, n, h, cont=0, posicoes[10008];  
        scanf("%d", &n);
        for(h=0; h<n; h++){
            scanf("%d", &qtd);
            for(i=0; i<qtd; i++){
                scanf("%d", &c);
                vetor[i]=c;
            }
    
            for(i=0; i<qtd; i++){
                for(j=0; j<qtd; j++){
                    if(j!=i){
                        if(vetor[i]==vetor[j]){
                            posicoes[j]=vetor[i];
                        }
                    }
                }
            }
    
            for(i=0; i<qtd; i++){
                for(j=i+1; j<qtd; j++){
                    if(vetor[i]==posicoes[j]){
                        cont++;
                        break;
                    }
                }
            }
            printf("%d\n", qtd-cont);
            cont=0;
        }
    
        return 0;
    }

    Alguém pode me dizer o que posso fazer para diminuir o tempo de execução?

  • Miguel Araújo replied 6 years ago

    Funfou perfeito com set. Valeu meitcher

  • Miguel Araújo replied 6 years ago

    Obrigado cara, vou dar uma olhada nesta estrutura.

  • Marcos Treviso replied 6 years ago

    Aloca no heap o container, fazendo o seguinte:

    int *container = new int[100000009];

    E não se esqueca de liberar essa memória no fim do programa:

    delete[] container;

    Além disso, seu vetor vai até 100000009 e o valor do índice pode ultrapassar ele. Minha dica é que você pesquise sobre uma estrutura chamada set.

    Valeu!

  • Miguel Araújo replied 6 years ago

    AC

    Estou recebendo "runtime error". Alguém sabe me indicar em qual parte do meu código dá esse erro?