Submission #1168274

#TimeUsernameProblemLanguageResultExecution timeMemory
1168274KaleemRazaSyedInspector (POI13_ins)C++20
0 / 100
3250 ms7060 KiB
#include<bits/stdc++.h> using namespace std; int main() { int _; cin >> _; while(_--) { int n, m; cin >> n >> m; int t[m], p[m], c[m]; for(int i = 0; i < m; i ++) { cin >> t[i] >> p[i] >> c[i]; t[i]--, c[i]++; p[i]--; } int l = 0, r = m+1; while(r - l > 1) { int mid = (l + r) / 2; int sz[m] = {}, mx[n]; vector<int> pro[m]; memset(sz, -1, sizeof(sz)); memset(mx, -1, sizeof(mx)); bool True = true; for(int i = 0 ; i < mid; i++) { pro[t[i]].push_back(p[i]); mx[p[i]] = max(mx[p[i]], t[i]); if(sz[t[i]] == -1) sz[t[i]] = c[i]; else if(sz[t[i]] != c[i]) True = false; } set<pair<int,int> > pt; for(int i = 0; i < m ;i ++) { for(int x : pro[i]) pt.insert({mx[x], x}); if(pt.size() > sz[i] && sz[i] != -1) True = false; while(pt.size() && pt.begin()->first <= i) pt.erase(pt.begin()); } // cerr << "True = " << True << ' ' << mid << endl; if(True) l = mid; else r = mid; } cout << l << endl; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...