Submission #60256


ソースコード

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
#include<stdio.h>
signed main(){
int n,m,i;
int a[1000000],T;
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
scanf("%d",&m);
int low=-1; /*T以下がなかった場合0だと出力のとき、
0なのに1が出てしまうから*/
int high=n;
for(i=0;i<m;i++){
scanf("%d",&T);
low=-1; /*lowとhighを初期化しないと、
一回目のforのときの値が入ったままになっている*/
high=n; /*上に同じ*/
while(high-low>1){ /*二分探索でせばめて値が1つになったら終わる*/
int mid=(high+low)/2;
if(a[mid]<=T){
low=mid;
}else{
high=mid;
}
}
printf("%d\n",low+1); /*low,mid(このプログラムの場合)だけだとダメ!*/
}
return(0);
}

ステータス

項目 データ
問題 0738 - プログラミング入門:二分探索
ユーザー名 ei2038
投稿日時 2020-06-24 18:34:25
言語 C
状態 Accepted
得点 10
ソースコード長 889 Byte
最大実行時間 104 ms
最大メモリ使用量 7160 KB

セット

セット 得点 Cases
1 Linear Search 2 / 2 Input0[1-5]
2 Binary Search 8 / 8 *

テストケース

ファイル名 状態 実行時間 メモリ使用量 #
Input01 AC 22 ms 504 KB
1
2
Input02 AC 18 ms 516 KB
1
2
Input03 AC 20 ms 336 KB
1
2
Input04 AC 21 ms 468 KB
1
2
Input05 AC 21 ms 504 KB
1
2
Input06 AC 104 ms 5028 KB
2
Input07 AC 104 ms 5656 KB
2
Input08 AC 97 ms 6284 KB
2
Input09 AC 104 ms 7160 KB
2
Input10 AC 98 ms 7140 KB
2