// @check-accepted: task
#include <iostream>
#include <algorithm>
#include <vector>
#include <set>
using namespace std;
using ii = pair<int,int>;
int test(const vector<ii> &m, int c) {
set<ii> active;
int del = 0;
for(int i = 0; i < m.size(); ++i) {
while(!active.empty() && active.begin()->first < m[i].first) active.erase(active.begin());
active.insert(ii(m[i].second, i));
if(active.size() > c) {
active.erase(prev(active.end()));
++del;
}
}
return del;
}
int main() {
int N, K;
cin >> N >> K;
vector<ii> m(N);
for(ii &x: m) cin >> x.first >> x.second;
sort(m.begin(), m.end());
int lb = 0, ub = N;
while(lb < ub) {
int mid = (lb + ub) / 2;
if(test(m, mid) <= K) {
ub = mid;
} else {
lb = mid + 1;
}
}
cout << lb << "\n";
return 0;
}
Ly8gQGNoZWNrLWFjY2VwdGVkOiB0YXNrCgojaW5jbHVkZSA8aW9zdHJlYW0+CiNpbmNsdWRlIDxhbGdvcml0aG0+CiNpbmNsdWRlIDx2ZWN0b3I+CiNpbmNsdWRlIDxzZXQ+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnVzaW5nIGlpID0gcGFpcjxpbnQsaW50PjsKCmludCB0ZXN0KGNvbnN0IHZlY3RvcjxpaT4gJm0sIGludCBjKSB7CiAgICBzZXQ8aWk+IGFjdGl2ZTsKICAgIGludCBkZWwgPSAwOwoKICAgIGZvcihpbnQgaSA9IDA7IGkgPCBtLnNpemUoKTsgKytpKSB7CiAgICAgICAgd2hpbGUoIWFjdGl2ZS5lbXB0eSgpICYmIGFjdGl2ZS5iZWdpbigpLT5maXJzdCA8IG1baV0uZmlyc3QpIGFjdGl2ZS5lcmFzZShhY3RpdmUuYmVnaW4oKSk7CiAgICAgICAgYWN0aXZlLmluc2VydChpaShtW2ldLnNlY29uZCwgaSkpOwogICAgICAgIGlmKGFjdGl2ZS5zaXplKCkgPiBjKSB7CiAgICAgICAgICAgIGFjdGl2ZS5lcmFzZShwcmV2KGFjdGl2ZS5lbmQoKSkpOwogICAgICAgICAgICArK2RlbDsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIGRlbDsKfQoKaW50IG1haW4oKSB7CiAgICBpbnQgTiwgSzsKICAgIGNpbiA+PiBOID4+IEs7CiAgICB2ZWN0b3I8aWk+IG0oTik7CiAgICBmb3IoaWkgJng6IG0pIGNpbiA+PiB4LmZpcnN0ID4+IHguc2Vjb25kOwoKICAgIHNvcnQobS5iZWdpbigpLCBtLmVuZCgpKTsKCiAgICBpbnQgbGIgPSAwLCB1YiA9IE47CiAgICB3aGlsZShsYiA8IHViKSB7CiAgICAgICAgaW50IG1pZCA9IChsYiArIHViKSAvIDI7CiAgICAgICAgaWYodGVzdChtLCBtaWQpIDw9IEspIHsKICAgICAgICAgICAgdWIgPSBtaWQ7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgbGIgPSBtaWQgKyAxOwogICAgICAgIH0KICAgIH0KCiAgICBjb3V0IDw8IGxiIDw8ICJcbiI7CgogICAgcmV0dXJuIDA7Cn0K