#include<stdcpp.h>
using namespace std;
class Solution {
public:
    bool carPooling(vector<vector<int>>& trips, int capacity) {
        int len = trips.size();
        struct op{
            bool tp;
            int people;
            int station;
        };
        vector<op> ops(trips.size()*2+10);
        for(int i = 0 ; i < trips.size() ;i++){
            op in = {true,trips[i][0],trips[i][1]};
            op out = {false,trips[i][0],trips[i][2]};
            ops[i*2] = in;
            ops[i*2+1] = out;
        }
        sort(ops.begin(), ops.end(), [](const op a, const op& b){
            return a.station<b.station||(a.station == b.station && a.tp < b.tp);
        });
        int peo = 0;
        for(int i = 0 ; i < ops.size() ; i++){
            if(!ops[i].tp){
                peo-=ops[i].people;
            }
            if(ops[i].tp){
                peo+=ops[i].people;
                if(peo>capacity)
                    return false;
            }
        }
        return true;
    }
};

int main(){
    Solution sol;
    vector<int> sta1 = {2,1,5};
    vector<int> sta2 = {3,3,7};
    vector<vector<int> >ex1 = {sta1,sta2};
    cout<<sol.carPooling(ex1, 4)<<endl;
    cout<<sol.carPooling(ex1, 5)<<endl;
    
    
    return 0;
}