#include <set>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
typedef long long ll;
struct P{
int a,b,c;
bool operator < (const P &rhs) const{
return a<rhs.a;
}
}alp[300030];
int n;
int main() {
cin>>n;
for(int i=0;i<n;i++) cin>>alp[i].a>>alp[i].b>>alp[i].c;
sort(alp,alp+n);
multiset<int> pool;
multiset<int>::iterator it;
int ans = 0;
for(int i=0;i<n;i++){
if(alp[i].c){
it = pool.lower_bound(alp[i].b);
if(it!=pool.begin()){
--it;
pool.erase(it);
ans+=1;
}
}else{
pool.insert(alp[i].b);
}
}
cout<<ans<<endl;
return 0;
} I题数据还有点问题,这个代码本来不应该过的但是过了,两个x值相同的星星连在一起了。