Pagini recente » Cod sursa (job #1608475) | Cod sursa (job #1638638) | Cod sursa (job #1930913) | Cod sursa (job #245486) | Cod sursa (job #2490150)
#include <bits/stdc++.h>
using namespace std;
int aib[3501][3501],n;
struct ura{
int x,y,z;
}v[3501];
bool cmp(ura a,ura b){
return a.z < b.z;
}
void update(int x,int y,int val){
int i,j;
for(i = x;i <= n;i += i&(-i)){
for(j = y;j <= n;j += j&(-j)){
aib[i][j] = max(val,aib[i][j]);
}
}
}
int suma(int x,int y){
int i,j,suma = 0;
for(i = x;i >= 1;i -= i&(-i)){
for(j = y;j >= 1;j -= j&(-j)){
suma = max(suma,aib[i][j]);
}
}
return suma;
}
int main()
{
ifstream cin("cutii.in");
ofstream cout("cutii.out");
int t;
cin >> n >> t;
while(t--){
int i;
for(i = 0;i <= n;i++){
for(int j = 0;j <= n;j++)
aib[i][j] = 0;
}
for(i = 1;i <= n;i++){
cin >> v[i].x >> v[i].y >> v[i].z;
}
sort(v + 1,v +n + 1,cmp);
int maxim = 0;
for(i = 1;i <= n;i++){
maxim = max(maxim,suma(v[i].x,v[i].y) + 1);
update(v[i].x,v[i].y,suma(v[i].x,v[i].y) + 1);
}
cout << maxim << "\n";
}
return 0;
}