1. 程式人生 > >Codeforces Round #501 (Div. 3) A Points in Segments

Codeforces Round #501 (Div. 3) A Points in Segments

segments ble round show 默認 () for using pre

翻譯

現在有一個數軸,上面會有\(M\)個點,標號為\(1\)\(N\),現在給你在數軸上的條\(N\)線段的起始與終止的點,問哪幾個點沒有被這樣線段覆蓋,從小到大輸出。

思路

簽到題目。感覺幾乎和一道題一樣:校門外的樹,撞題是很尷尬。思路差不多,即為開一個數組,全部賦值為\(0\),輸入的線段的時候,將其起點與終點的全部的點賦值為\(1\),最後跑一下看看那些為\(0\)的點就完事了。

Code

#include<iostream>
using namespace std;
int book[1001];//默認為0
int main()
{
    int n,k,t=0;
    cin>>n>>k;
    for(int i=1;i<=n;i++)
    {
        int a,b;
        cin>>a>>b;
        for(int j=a;j<=b;j++)//標記線段的區間
            book[j]=1;
    }
    for(int i=1;i<=k;i++)
        if(book[i]==0)//0即為沒有覆蓋
            t++;
    cout<<t<<endl; 
    for(int i=1;i<=k;i++)
        if(book[i]==0)
            cout<<i<<" ";   
    return 0;
}

Codeforces Round #501 (Div. 3) A Points in Segments