TOPIC

PROBLEM 1609 - URI Fórum 1.0

beecrowd asked 9 years ago

URI Online Judge Fórum 1.0

MOD

This topic was solved and cannot recieve new replies.

  • mmelo3 replied 8 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.

  • mmelo3 replied 8 years ago

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

  • jpfranca replied 8 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);
        }
    }
  • thalyson004 replied 9 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

  • mafbirck replied 9 years ago

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

    Resolvido

    Obrigado pelas dicas...

  • noliveira1993 replied 9 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;
    }
  • Matheus71 replied 9 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());
    
            }
    
        }
    }
  • irbduarte replied 9 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?

  • MiguelAraujo replied 9 years ago

    Funfou perfeito com set. Valeu meitcher

  • MiguelAraujo replied 9 years ago

    Obrigado cara, vou dar uma olhada nesta estrutura.

  • mtreviso replied 9 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!

  • MiguelAraujo replied 9 years ago

    AC

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