TOPIC
PROBLEM 1609 - URI Fórum 1.0
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?
-
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?