Pagini recente » Cod sursa (job #2752117) | Cod sursa (job #1536796) | Cod sursa (job #978614) | Cod sursa (job #1490513) | Cod sursa (job #2940899)
#include<bits/stdc++.h>
using namespace std;
ifstream fin("cutii.in");
ofstream fout("cutii.out");
int n;
pair<int,pair<int,int>> cutii[3501];
int aib[3501][3501];
void reset_aib(int n)
{
for(int i=0;i<=n;i++)
for(int j=0;j<=n;j++)
aib[i][j]=0;
}
int qry(int poz2,int poz3)
{
int rez=0;
for(int i=poz2;i>0;i-=(i&(-i)))
for(int j=poz3;j>0;j-=(j&(-j)))
rez=max(rez,aib[i][j]);
return rez;
}
void upd(int poz2, int poz3, int newval)
{
for(int i=poz2;i<=n;i+=(i&(-i)))
for(int j=poz3;j<=n;j+=(j&(-j)))
aib[i][j]=max(aib[i][j],newval);
}
int main()
{
int t;
fin>>n>>t;
while(t--)
{
reset_aib(n);
for(int i=0;i<n;i++)
{
int x,y,z;
fin>>x>>y>>z;
cutii[i]={x,{y,z}};
}
sort(cutii,cutii+n);
for(int i=0;i<n;i++)
{
int cur;
cur=qry(cutii[i].second.first,cutii[i].second.second)+1;
upd(cutii[i].second.first,cutii[i].second.second,cur);
}
fout<<qry(n,n)<<"\n";
}
return 0;
}