Submission #35808


ソースコード

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
//マージソート INFとMINを間違えて時間がかかった
#include <stdio.h>
#define MIN -100000
void merge(int data[105], int l, int mid, int r);
void mergesort(int data[105], int l, int r);
int main()
{
int n;
int data[105];
int i;
scanf("%d", &n);
for ( i = 0; i < n; i++) {
scanf("%d", &data[i]);
}
mergesort(data, 0, n);
for ( i = 0; i < n; i++) {
printf("%d\n", data[i]);
}
return 0;
}
void merge(int data[105], int l, int mid, int r)
{
int n1 = mid - l;
int n2 = r - mid;
int left[n1 + 1];
int right[n2 + 1];
int i, j, k;
for ( i = 0; i < n1; i++) {
left[i] = data[l + i];
}
left[i] = MIN;
for ( i = 0; i < n2; i++) {
right[i] = data[mid + i];
}
right[i] = MIN;
i = j = 0;
for ( k = l; k < r; k++ ) {
if ( left[i] >= right[j] ) {
data[k] = left[i];
i++;
} else {
data[k] = right[j];
j++;
}
}
return;
}
void mergesort(int data[105], int l, int r)
{
if ( r - l > 1 ) {
mergesort(data, l, (l + r) / 2);
mergesort(data, (l + r) / 2, r);
merge(data, l, (l + r) / 2, r);
}
return;
}

ステータス

項目 データ
問題 0930 - 背の順
ユーザー名 ei1710
投稿日時 2018-05-15 20:18:41
言語 C
状態 Accepted
得点 1
ソースコード長 1323 Byte
最大実行時間 24 ms
最大メモリ使用量 448 KB

セット

セット 得点 Cases
1 ALL 1 / 1 *

テストケース

ファイル名 状態 実行時間 メモリ使用量 #
rnd_1.txt AC 23 ms 380 KB
1
rnd_2.txt AC 20 ms 436 KB
1
rnd_3.txt AC 19 ms 364 KB
1
rnd_4.txt AC 24 ms 388 KB
1
rnd_5.txt AC 17 ms 448 KB
1
sample.txt AC 16 ms 408 KB
1