//Solution by lukasP (Lukáš Poláček) #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define rep(i,a,b) for(__typeof(b) i=a; i<(b); ++i) #define trav(it,c) for(__typeof((c).begin()) it=(c).begin(); it!=(c).end(); ++it) typedef long long ll; typedef pair pii; typedef vector vi; int main() { int n, k; scanf("%d %d", &n, &k); set w; vector intervals(n); rep(i,0,n) { scanf("%d %d", &intervals[i].second, &intervals[i].first); w.insert(intervals[i].first); w.insert(intervals[i].second); } unordered_map ord; int u = 0; for (int x : w) ord[x] = u++; vector s(u); sort(intervals.begin(), intervals.end()); int res = 0; for (pii &o : intervals) { pii z(ord[o.second], ord[o.first]); bool ok = true; rep(i,z.first,z.second) if (s[i] >= k) { ok = false; break; } if (ok) { for (int i = z.first; i < z.second; i++) s[i]++; res++; } } cout << res << endl; }