题解 CF31C 【Schedule】

· · 题解

题目要使其余组的课程没有两个时间段相交

上代码。

#include<bits/stdc++.h>
using namespace std;
int l[5005],r[5005],s=0,sum[5005];
int n;
vector<int> ans;
int main()
{
    cin>>n;
    for(int i=0;i<n;i++)//输入
    {
        cin>>l[i]>>r[i];
        sum[i]=0;
    }
    for(int i=0;i<n;i++)//要双重
        for(int j=0;j<i;j++)
        {
            if(l[i]<r[j]&&l[j]<r[i])//判断是否要取消
            {
                sum[i]++;
                sum[j]++;
                s++;//计数
            }
        }
    for(int i=0;i<n;i++)
        if(sum[i]==s)
            ans.push_back(i+1);
    cout<<ans.size()<<endl;//输出
    for(int i=0;i<ans.size();i++)
        cout<<ans[i]<<" ";
}