パソコン甲子園(2011年予選問題第1問

パソコン甲子園より(2011年予選問題第1問)

入力
複数のデータセットの並びが入力として与えられます。入力の終わりはゼロひとつの行で示されます。各データセットは以下のとおりです。
1 行目 1日の目標時間 t(整数)
2 行目 勉強の回数 n(整数)
3 行目 第 1 の勉強の開始時刻 s 終了時刻 f(整数 整数;半角空白区切り)
n+2 行目 第 n の勉強の開始時刻 s 終了時刻 f

出力
入力データセットごとに、OK または足りない時間を出力します。

以下ソース


# 1.awk
BEGIN{
start = 0;
time = 0;
}

{
if(start == 0){
t = $0;
start = 1;
}else if(start == 1){
n = $0;
start = 2;
}else{
s = $1;
f = $2;
time = time + (f - s);
n--;

if(n == 0){
start = 0;
if(time >= t){
print "OK";
}else{
print - (time - t);
}
time = 0;
}
}
if($0 == 0){
exit;
}
}

実行してみます。

入力データ


10
3
6 11
12 15
18 22
14
2
6 11
13 20
0


gawk -f 1.awk 1.txt

OK
2