Pagini recente » Cod sursa (job #951366) | Cod sursa (job #1885004) | Cod sursa (job #331069) | Cod sursa (job #1684524) | Cod sursa (job #2215245)
#include <bits/stdc++.h>
#define frs first.first
#define snd first.second
#define thr second
using namespace std;
ifstream f("cutii.in");
ofstream g("cutii.out");
pair<pair<int,int>, int> a[3510];
int n,t,i;
int aib[3510][3510];
int getmax(int i,int j)
{
int ret=0;
for(;i;i-=i&-i)
for(;j;j-=j&-j)
ret=max(ret,aib[i][j]);
return ret;
}
void upd(int i,int j,int val)
{
for(;i<=n;i+=i&-i)
for(;j<=n;j+=j&-j)
aib[i][j]=max(aib[i][j],val);
return ;
}
int main()
{
f>>n>>t;
for(;t;t--)
{
int ans=0;
for(i=1;i<=n;i++)
f>>a[i].frs>>a[i].snd>>a[i].thr;
sort(a+1,a+n+1);
memset(aib,0,sizeof(aib));
for(i=1;i<=n;i++)
{
int x=getmax(a[i].snd-1,a[i].thr-1);
upd(a[i].snd,a[i].thr,x+1);
ans=max(ans,x+1);
}
g<<ans<<'\n';
}
return 0;
}