結果
問題 | No.45 回転寿司 |
ユーザー | Fre_de_rica |
提出日時 | 2019-02-23 17:15:41 |
言語 | C (gcc 12.3.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 2,037 bytes |
コンパイル時間 | 1,687 ms |
コンパイル使用メモリ | 30,464 KB |
実行使用メモリ | 6,948 KB |
最終ジャッジ日時 | 2024-05-07 18:34:16 |
合計ジャッジ時間 | 1,610 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | WA | - |
testcase_01 | WA | - |
testcase_02 | WA | - |
testcase_03 | WA | - |
testcase_04 | WA | - |
testcase_05 | WA | - |
testcase_06 | WA | - |
testcase_07 | WA | - |
testcase_08 | WA | - |
testcase_09 | WA | - |
testcase_10 | WA | - |
testcase_11 | WA | - |
testcase_12 | WA | - |
testcase_13 | WA | - |
testcase_14 | WA | - |
testcase_15 | WA | - |
testcase_16 | WA | - |
testcase_17 | WA | - |
testcase_18 | WA | - |
testcase_19 | WA | - |
testcase_20 | WA | - |
testcase_21 | WA | - |
testcase_22 | WA | - |
testcase_23 | AC | 1 ms
6,940 KB |
testcase_24 | WA | - |
testcase_25 | WA | - |
testcase_26 | WA | - |
testcase_27 | WA | - |
testcase_28 | WA | - |
testcase_29 | WA | - |
testcase_30 | WA | - |
testcase_31 | WA | - |
testcase_32 | WA | - |
testcase_33 | WA | - |
コンパイルメッセージ
main.c: In function 'main': main.c:45:43: warning: passing argument 1 of 'void_check' from incompatible pointer type [-Wincompatible-pointer-types] 45 | void_check_n = void_check(&void_list, sushi_value_data[i].array_num); | ^~~~~~~~~~ | | | int (*)[3001] main.c:12:17: note: expected 'int *' but argument is of type 'int (*)[3001]' 12 | int void_check( int *, int); | ^~~~~ main.c:50:42: warning: passing argument 1 of 'void_data_insert' from incompatible pointer type [-Wincompatible-pointer-types] 50 | void_data_insert(&void_list, sushi_value_data[i].array_num, | ^~~~~~~~~~ | | | int (*)[3001] main.c:13:23: note: expected 'int *' but argument is of type 'int (*)[3001]' 13 | void void_data_insert(int *, int, int, int); | ^~~~~
ソースコード
#include <stdio.h> #include <stdlib.h> typedef struct { int value; int prev_array_num; int next_array_num; int array_num; } value_data; int desc(const void *p, const void *q); int void_check( int *, int); void void_data_insert(int *, int, int, int); int main(void){ int sushi_count = 0; int sushi_input_value_data[1001]; value_data sushi_value_data[1001]; int void_list[3001] = {0}; int void_check_n; size_t size; // value_data *p = sushi_value_data; // value_data *cp = p; int value_sum = 0; scanf("%d", &sushi_count); for (int i = 0; i < sushi_count; i++) { scanf("%d", &sushi_input_value_data[i]); sushi_value_data[i].value = sushi_input_value_data[i]; sushi_value_data[i].next_array_num = i + 1+1; sushi_value_data[i].prev_array_num = i - 1+1; sushi_value_data[i].array_num = i+1; } size = sizeof(sushi_value_data)/sizeof(value_data); qsort(sushi_value_data, size, sizeof(value_data), desc); for (int i = 0; i < sushi_count; i++) { void_check_n = void_check(&void_list, sushi_value_data[i].array_num); if (void_check_n != 1) { value_sum += sushi_value_data[i].value; void_data_insert(&void_list, sushi_value_data[i].array_num, sushi_value_data[i].next_array_num, sushi_value_data[i].prev_array_num); } } printf("%d\n", value_sum); return 0; } int desc(const void *p, const void *q) { value_data *P_data = (value_data *)p; value_data *Q_data = (value_data *)q; return Q_data->value - P_data->value; } int void_check( int *void_list, int array_num) { int i = 0; int ret = 0; int *p = void_list; while(1){ if (*p == 0) { //配列の終端 break; } if (*p == array_num) { ret = 1; } i++; p++; } return ret; } void void_data_insert(int *void_list, int array_num, int next_array_num, int prev_array_num) { int i = 0; int *p = void_list; while (1) { if (*p == 0 && *(p+1) == 0 && *(p+2) == 0 ) { *p = array_num; *(p+1) = next_array_num; *(p+2) = prev_array_num; break; } p++; i++; } }