結果
問題 | No.45 回転寿司 |
ユーザー | Fre_de_rica |
提出日時 | 2019-02-23 17:23:49 |
言語 | C (gcc 12.3.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 2,051 bytes |
コンパイル時間 | 119 ms |
コンパイル使用メモリ | 30,720 KB |
実行使用メモリ | 6,948 KB |
最終ジャッジ日時 | 2024-05-07 18:34:30 |
合計ジャッジ時間 | 982 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 | AC | 1 ms
5,376 KB |
testcase_23 | AC | 1 ms
6,944 KB |
testcase_24 | AC | 1 ms
6,944 KB |
testcase_25 | AC | 1 ms
5,376 KB |
testcase_26 | WA | - |
testcase_27 | WA | - |
testcase_28 | WA | - |
testcase_29 | WA | - |
testcase_30 | WA | - |
testcase_31 | WA | - |
testcase_32 | AC | 1 ms
6,944 KB |
testcase_33 | WA | - |
ソースコード
#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((int *)&void_list, sushi_value_data[i].array_num); if (void_check_n != 1) { value_sum += sushi_value_data[i].value; void_data_insert((int *)&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++; } }