Pagini recente » Cod sursa (job #1506204) | Cod sursa (job #1974402) | Cod sursa (job #1097423) | Clasament 12345678901 | Cod sursa (job #1232119)
#include<cstdio>
#include<algorithm>
using namespace std;
struct cut{
int a;
int b;
int c;
}v[4000];
int n,t,i,j,ii,vmax,a[3600][3600],s;
FILE *f,*g;
int cmp(cut x,cut y){
return x.c<y.c;
}
int maxim(int a,int b){
if(a>b)
return a;
return b;
}
void update(int x,int y){
for(int i=x;i<=n;i+=(i&-i)){
for(int j=y;j<=n;j+=(j&-j)){
a[i][j]=maxim(a[i][j],s+1);
}
}
}
void query(int x,int y){
for(int i=x;i>0;i-=(i&-i)){
for(int j=y;j>0;j-=(j&-j)){
s=maxim(s,a[i][j]);
}
}
vmax=maxim(s+1,vmax);
}
int main(){
f=fopen("cutii.in","r");
g=fopen("cutii.out","w");
fscanf(f,"%d%d",&n,&t);
while(t--){
vmax=0;
for(i=1;i<=n;i++){
fscanf(f,"%d%d%d",&v[i].a,&v[i].b,&v[i].c);
}
sort(v+1,v+n+1,cmp);
for(i=1;i<=n;i++){
s=0;
query(v[i].a-1,v[i].b-1);
update(v[i].a,v[i].b);
}
fprintf(g,"%d\n",vmax);
for(i=1;i<=n;i++){
for(j=v[i].a;j<=n;j+=(j&-j)){
for(ii=v[i].b;ii<=n;ii+=(i&-i)){
a[j][ii]=0;
}
}
}
}
fclose(f);
fclose(g);
return 0;
}