Pagini recente » Cod sursa (job #2061741) | Cod sursa (job #583188) | Cod sursa (job #2651829) | Cod sursa (job #2251438) | Cod sursa (job #2940902)
#include<fstream>
#include<algorithm>
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);
int rez=0,cur;
for(int i=0;i<n;i++)
{
cur=qry(cutii[i].second.first-1,cutii[i].second.second-1)+1;
rez=max(rez,cur);
upd(cutii[i].second.first,cutii[i].second.second,cur);
}
fout<<rez<<"\n";
}
return 0;
}