253472026-02-19 12:15:43abcdÜgyeletcpp17Elfogadva 40/408ms536 KiB
#include <bits/stdc++.h>
using namespace std;

int main(){
    int m,n;cin>>m>>n;
    vector<array<int,3>> v(n);
    for(int i=0;i<n;i++){
        cin>>v[i][0]>>v[i][1];
        v[i][2]=i+1;
    }
    sort(v.begin(),v.end(),[](array<int,3> a,array<int,3> b){
        if(a[0]==b[0])return a[1]>b[1];
        return a[0]<b[0];
    });
    int a=1,b=1,i=0,second=-1;
    vector<int> ans;
    while(a<m+1){
        int best=-1;
        int prev=-1;
        bool yes=false;
        if(second!=-1){
            if(v[second][1]>=a){
                best=second;
                yes=true;
            }
            second=-1;
        }
        while(i<n&&v[i][0]<=a&&prev<b){
            if(best==-1||v[i][1]>v[best][1]){
                second=best;
                best=i;
            }
            if(yes&&best!=i){
                if(second==-1||v[i][1]>v[second][1])second=i;
            }
            prev=v[i][0];
            i++;
            yes=true;
        }
        if(best==-1||(i==n&&v[best][1]!=m)){
            cout<<"0\n";
            return 0;
        }
        a=v[best][1]+1;
        ans.push_back(v[best][2]);
        if(a>b)swap(a,b);
    }
    cout<<ans.size()<<'\n';
    for(int x:ans)cout<<x<<' ';cout<<'\n';
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base40/40
1Elfogadva0/01ms500 KiB
2Elfogadva0/04ms508 KiB
3Elfogadva2/21ms316 KiB
4Elfogadva2/21ms316 KiB
5Elfogadva2/21ms396 KiB
6Elfogadva2/21ms316 KiB
7Elfogadva2/21ms316 KiB
8Elfogadva2/22ms536 KiB
9Elfogadva2/22ms316 KiB
10Elfogadva2/21ms316 KiB
11Elfogadva2/21ms316 KiB
12Elfogadva1/12ms316 KiB
13Elfogadva2/22ms316 KiB
14Elfogadva2/23ms316 KiB
15Elfogadva2/24ms444 KiB
16Elfogadva3/37ms516 KiB
17Elfogadva3/37ms496 KiB
18Elfogadva3/38ms512 KiB
19Elfogadva3/38ms520 KiB
20Elfogadva3/38ms512 KiB