Pagini recente » Cod sursa (job #1640010) | Cod sursa (job #58120) | Cod sursa (job #2914236) | Cod sursa (job #1709592) | Cod sursa (job #2503383)
#include <fstream>
#include <cstring>
#define y first
#define z second
using namespace std;
ifstream fin("cutii.in");
ofstream fout("cutii.out");
int n,T,i,j,k,st,dr,mid,cnt,u,sol,m,p1,p2,r;
pair<int,int> v[3501];
int a[3501][3501];
void upd(int y, int z){
for(int p1=y; p1<=n; p1+=(p1&-p1))
for(int p2=z; p2<=n; p2+=(p2&-p2))
a[p1][p2]=max(a[p1][p2],m+1);
}
void rst(int y, int z){
for(int p1=y; p1<=n; p1+=(p1&-p1))
for(int p2=z; p2<=n; p2+=(p2&-p2))
a[p1][p2]=0;
}
int query(int y, int z){
r=0;
for(int p1=y; p1; p1-=(p1&-p1))
for(int p2=z; p2; p2-=(p2&-p2))
r=max(r,a[p1][p2]);
return r;
}
int main(){
fin>>n;
for(fin>>T;T;T--){
for(i=1;i<=n;i++){
fin>>j;
fin>>v[j].y>>v[j].z;
}
sol=-1;
for(i=1;i<=n;i++){
m=query(v[i].y, v[i].z);
sol=max(sol,m+1);
upd(v[i].y, v[i].z);
}
fout<<sol<<"\n";
for(i=1;i<=n;i++)
rst(v[i].y, v[i].z);
}
return 0;
}