着席確認

# 問題
与えられた座席数の円卓に複数のグループが座ります
各グループは座り出しの位置を希望します
グループの全員が座れないと帰ります
最終的に何人が座れたか？

# 入力
座席数　グループ数
6 3
グループ人数　座り出しの位置
3 2
1 6
2 ６

# コード

```php
<?php
//①入力処理：値取得、テーブル座席の配列準備

$nm_array = explode(" ",fgets(STDIN));
//fgetsで入力の１行目を取得しスペースで区切り、$nm_arrayに代入
$seat_num = $nm_array[0];
//座席数
$group_num = $nm_array[1];
//来るグループ数
//echo "シート数：".$seat_num."\n";
//echo "グループ数：".$group_num."\n";

$seat = array();
//席数分の配列を準備
$seat = array_pad($seat, $seat_num, 0);
//配列のレコードを全て0（空席）で埋める
//print_r($seat);


//②グループ毎に空席確認

//グループ分のループ
$count = 0;
//座った人数を数える変数
for($i=0 ; $i < $group_num ; $i++){
//グループ数が$iより小さいうちはループする　グループ数分ループする
    $group_array = explode(" ",fgets(STDIN));
    //入力の２行目以降を読み込み、スペースで区切り、配列に代入
    $group_person_num = $group_array[0];
    //グループの人数
    $sit_point = $group_array[1] - 1;
    //グループの座り出しの位置　座る位置は1から始まる為、配列の最初0に合わせる為に-1をする
    //echo "グループの人数:".$group_person_num."\n";
    //echo "着席開始位置:".$sit_point."\n";

    // グループ人数分のループ、空席確認
    $empty_flg = true;
    //空席かどうかの確認のためのフラグ作成　trueは空席
    for($j = $sit_point; $j < $sit_point+$group_person_num; $j++){
    //グループの座り出しの位置がグループの座り出しの位置+グループの人数より大きくなるまでループする 人数分ループする

        //円卓処理
        if($j >= $seat_num){
        //グループの座り出しの位置+ループした回数が座席数以上の時は
            $search_point = $j - $seat_num;
            //確認する座席は、グループの座り出しの位置+ループした回数-座席数 
        }else{
            $search_point = $j;
            //未満の時は確認する座席は、グループの座り出しの位置+ループした回数
        }
        //echo $search_point;

        // 空席確認
        if($seat[$search_point] >0){
        //座席数の配列の確認する番号の値が0より大き時　埋まっている時
            $empty_flg= false;
            ////空席かどうかの確認のためのフラグはfalseにする
            break;
            //ループを抜ける
        }
    }
    //var_dump($empty_flg);


    //③席が空いていたら座る処理
    if($empty_flg == true){
    //もし空席なら
        //グループの人数分のループ、着席処理
        for($j = $sit_point; $j < $sit_point+$group_person_num; $j++){
        //グループの座り出しの位置がグループの座り出しの位置+グループの人数より大きくなるまでループする 人数分ループする
            //円卓処理
            if($j >= $seat_num){
            //グループの座り出しの位置+ループした回数が座席数以上の時は
                $search_point = $j - $seat_num;
                //確認する座席は、グループの座り出しの位置+ループした回数-座席数 
            }else{
                $search_point = $j;
                //未満の時は確認する座席は、グループの座り出しの位置+ループした回数
            }
            //echo $search_point;

            // 着席処理
            $seat[$search_point]=1;
            //座席数の配列の確認する番号の値を１にする
            $count += 1;
            //座った人数を数える変数を+1する
        }

    }
    //print_r($seat);
}
//④出力処理：座った人の人数を出力
echo $count;
```

整理します

```php

<?php

function Round_table($j,$seat_num){
    if($j >= $seat_num){
        $search_point = $j - $seat_num;
    }else{
        $search_point = $j;
    }
    return $search_point;
}

list($seat_num ,$group_num) = explode(" ",fgets(STDIN));

$seat = array_pad(array(), $seat_num, 0);

$count = 0;

for($i=0 ; $i < $group_num ; $i++){
    list($group_person_num ,$sit_point) = explode(" ",fgets(STDIN));
    $sit_point -= 1;
    $empty_flg = true;

    for($j = $sit_point; $j < $sit_point+$group_person_num; $j++){
        $search_point = Round_table($j,$seat_num);
        if($seat[$search_point] >0){
            $empty_flg= false;
            break;
        }
    }

    if($empty_flg == true){
        for($j = $sit_point; $j < $sit_point+$group_person_num; $j++){
            $search_point = Round_table($j,$seat_num);
            $seat[$search_point]=1;
            $count += 1;
        }
    }
}
echo $count;
```


さらに整理します

```php

<?php
list($seat_num ,$group_num) = explode(" ",fgets(STDIN));
$seat = array_pad(array(), $seat_num, 0);

$count = 0;

for($i=0 ; $i < $group_num ; $i++){
    list($group_person_num ,$sit_point) = explode(" ",fgets(STDIN));
    $sit_point -= 1;
    $empty_flg = true;

    for($j = $sit_point; $j < $sit_point+$group_person_num; $j++){
        if($seat[$j % $seat_num] > 0){
            $empty_flg = false;
            break;
        }
    }

    if($empty_flg == true){
        for($j = $sit_point; $j < $sit_point+$group_person_num; $j++){
            $seat[$j % $seat_num]=1;
            $count += 1;
        }
    }
}
echo $count;

```