Submission
Status:
(PPPP)(PPP)(PPPP)(PPPPPPP)(PPPPPPP)(PPPPPPPPPPP)(PPPPPPPPPPPPPPxPPPPxPPPxPPPPPPPPPPPPPPPPPPxP)
Subtask/Task Score:
{9/9}{5/5}{6/6}{11/11}{14/14}{25/25}{0/30}
Score: 70
User: njoop
Problemset: ผลึกเวลา (Crystal)
Language: cpp
Time: 1.354 second
Submitted On: 2025-05-23 18:40:29
#include <bits/stdc++.h>
#define pb push_back
#define pii pair<int,int>
#define f first
#define s second
#define MAXN 200005
#define MOD (int)(1e9+7)
#define INF (int)1e17
#define enl '\n'
#define int long long
#define DB(code) cout<<'\t'<<code<<'\n';
#define SP <<' '<<
using namespace std;
signed main(){
cin.tie(0)->sync_with_stdio(false);
int m,k,n;
cin >> m >> k >> n;
pair<int,pii> arr[n]; // {time,{lane,val}}
for(int i=0; i<n; i++) cin >> arr[i].s.s >> arr[i].s.f >> arr[i].f;
sort(arr,arr+n);
vector<int> val[m];
for(int i=0; i<n; i++){
pii c=arr[i].s;
int pos=upper_bound(val[c.f].begin(),val[c.f].end(),c.s)-val[c.f].begin();
if(pos>=(int)val[c.f].size()) val[c.f].pb(c.s);
else val[c.f][pos]=c.s;
for(int j=0; j<m; j++) if(j!=c.f){
if(pos-k>=0 && pos-k<(int)val[j].size()) val[j][pos-k]=min(val[j][pos-k],c.s);
else if(pos-k>=(int)val[j].size()) val[j].pb(c.s);
}
}
int ans=0;
for(int i=0; i<m; i++) ans=max(ans,(int)val[i].size());
cout << ans;
return 0;
}