序文:
21.再テストに参加できるかどうかに関係なく、道路に書かれたゴミコードを記録します。もともと「AlgorithmNotes」をかじったのですが、やりすぎたので、Kingway ComputerTestGuideに変更しました。
タイトル説明:
長さL(1 <= L <= 10000)の道路があり、これはナンバーライン上の長さLのラインセグメントとして想像できます。開始点は座標の原点です。各整数座標点、つまり0,1にツリーがあります。 、2、...、LのL +1位置にL + 1ツリーがあります。次に、いくつかのツリーを削除する必要があります。削除されたツリーの間隔は、数字のペアで表されます。たとえば、100 200は、100から200(エンドポイントを含む)までのすべてのツリーを削除することを意味します。M(1 <= M <= 100)の間隔があり、間隔の間に重複がある場合があります。ここで、間隔内のすべてのツリーを削除した後に残っているツリーの数を削除する必要があります。
説明を入力してください
2つの整数L(1 <= L <= 10000)およびM(1 <= M <= 100)。
次に、整数のMグループがあり、各グループには1対の数値があります。
出力の説明:
入力データのセットが複数ある場合があります。入力データのセットごとに、間隔内のすべてのツリーを削除した後に残っているツリーの数を表す数値が出力されます。
回答:
#include<stdio.h>
#define max 10001
int main()
{
int l, m,left,right,count=0;
char tree[max] ;
for (int i = 0; i < max; i++)
tree[i] = '1';
while (scanf("%d%d", &l, &m) != EOF) {
while (m--) {
scanf("%d%d", &left, &right);
for (int i = left; i <= right; i++)
tree[i] = '0';
}
for (int i = 0; i <=l; i++)
if (tree[i] == '1')
count++;
printf("%d\n", count);
for (int i = 0; i < max; i++)
tree[i] = '1';
count = 0;
}
return 0;
}