Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- struct seg {
- int dn, up, id;
- bool operator<(const seg&a)const {
- return dn < a.dn;
- }
- };
- int main()
- {
- ll q, w, e, n, m, k, qq = 0, qw = 0, wq = 0, ww = 0;;
- string s1, s2;
- cin >> n >> m;
- vector<seg>ver(n);
- for (int i = 0; i < n; i++) {
- cin >> ver[i].dn >> ver[i].up;
- ver[i].id = i;
- }
- sort(ver.begin(), ver.end());
- if (ver[0].dn != 1)
- return(cout << "No", 0);
- vector<seg>ans;
- ans.pb({ 0,0,-1 });
- ans.pb(ver[0]);
- for (int i = 1; i < ver.size(); i++) {
- if (ans.back().up == m)
- break;
- if (ver[i].up >= ans.back().up&&ver[i].dn - 1 <= ans[ans.size() - 2].up) {
- ans.pop_back();
- ans.pb(ver[i]);
- }
- else if (ver[i].dn - 1 <= ans.back().up)
- ans.pb(ver[i]);
- else
- return(cout << "No", 0);
- }
- if (ans.back().up != m) {
- return(cout << "No", 0);
- }
- cout << "Yes" << endl;
- cout << ans.size() - 1 << endl;
- for (int i = 1; i < ans.size(); i++) {
- cout << ans[i].id + 1 << ' ';
- }
- q = 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement