{{{ #include #include #include using namespace std; bool chain(pair &p1, pair &p2) { if( (p1.first > p2.first && p1.second < p2.second) || (p1.first == p2.first && p1.second < p2.second) || (p1.first > p2.first && p1.second == p2.second) ) return true; if( (p1.first < p2.first && p1.second > p2.second) || (p1.first == p2.first && p1.second > p2.second) || (p1.first < p2.first && p1.second == p2.second) ) return true; return false; } class op { public: bool operator() (pair &p1, pair &p2) { if(p1.first != p2.first) return p1.first < p2.first; else return p1.second > p2.second; } }myOp; int main() { vector> vc; vector vd; vc.push_back(make_pair(0,0)); vd.push_back(0); int t, dummy, s, e; cin>>t; while(t--) { cin>>dummy>>s>>e; vc.push_back(make_pair(s,e)); } vd.resize(vc.size()); for(int i=1; i0; j--) { if(chain(vc[i], vc[j])) { vd[i] = vd[j] +1; break; } } } int max = vd[1]; for(int i=2; i