HackerRank говорит ~ нет ответа на stdout ~ C

56
9

У меня возникает эта проблема, пытаясь решить этот вопрос на HackerRank. На repl.it мой код идет хорошо, но на их консоли у меня есть эта проблема.

Код:

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

int main() {
int t; //qtd de viagens
int m; //dinheiro para os sorvetes
int n; //qtd de sabores de sorvetes
int c[n+1]; //preço de cada sorvete
int r[t];
int s[t];

scanf("%d", &t);
for(int j = 0; j < t; j++){
scanf("%d", &m);
scanf("%d", &n);
for(int i = 1; i <= n; i++){
scanf("%d", &c[i]);
}
for (int i = 1; i < n; i++){
for(int k =i+1; k <= n; k++){
if (c[i]+c[k] == m){
r[j] = i;
s[j] = k;
}
}
}
}
for(int i = 0; i < t; i++){
printf("%d %d\n", *&r[i], *&s[i]);
}
return 0;
}

Входные данные:

 2
4
5
1 4 5 3 2
4
4
2 2 4 3

Выход на repl.it:

1 4
1 2

Выход на HackerRank:

~ no response on stdout ~

Это также дает мне сообщение о сбое сегментации.

спросил(а) 2017-03-14T07:21:00+03:00 3 года, 3 месяца назад
1
Решение
67

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

int main() {
int t, m, n;
//Declaration of dynamic arrays "r", "s" and "c"
int *c, *r, *s;

scanf("%d", &t);
//Allocation of memory for the int arrays "r" and "s"
r = malloc(t * sizeof(int));
s = malloc(t * sizeof(int));
for(int j=0; j < t; j++){
scanf("%d", &m);
scanf("%d", &n);
//Allocation of memory for the int array "c"
c = malloc(n+1 * sizeof(int));
for(int i = 1; i <= n; i++){
scanf("%d", &c[i]);
}
for (int i = 1; i < n; i++){
for(int k = i+1; k <= n; k++){
if ((c[i] + c[k]) == m){
r[j] = i;
s[j] = k;
}
}
}
free(c);
}
for(int i = 0; i < t; i++){
printf("%d %d\n", *&r[i], *&s[i]);
}
free(r);
free(s);

return 0;
}

Я использую valgrind для обнаружения утечек памяти:

==53541== HEAP SUMMARY:
==53541== in use at exit: 0 bytes in 0 blocks
==53541== total heap usage: 6 allocs, 6 frees, 2,081 bytes allocated
==53541==
==53541== All heap blocks were freed -- no leaks are possible

ответил(а) 2017-03-14T14:19:00+03:00 3 года, 3 месяца назад
-4

У вас есть 2 проблемы:

Вы используете VLA и не поддерживаете все компиляторы. Я говорю об этом: например, int c[n+1]. Измените динамическое распределение

Инициализируйте переменные со значениями перед их использованием (например, с n и t).

ответил(а) 2017-03-14T08:13:00+03:00 3 года, 3 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема