Pagini recente » Cod sursa (job #1453316) | Cod sursa (job #393727) | Cod sursa (job #2226859) | Cod sursa (job #1190629) | Cod sursa (job #2046260)
#include<fstream>
#include<algorithm>
using namespace std;
ifstream fin("cutii.in");
ofstream fout("cutii.out");
int n,i,j,t,rez,rezf;
pair<int,pair<int,int> > v[3505];
int aib[3505][3505];
int query(int i,int j){
int x,y;
int r=0;
for(x=i;x;x-=(x&-x)){
for(y=j;y;y-=(y&-y)){
r=max(r,aib[x][y]);
}
}
return r;
}
void update(int i,int j,int val){
for(;i<=n;i+=(i&-i)){
for(;j<=n;j+=(j&-j)){
aib[i][j]=max(aib[i][j],val);
}
}
}
int main(){
fin>>n>>t;
for(int o=1;o<=t;o++){
rezf=0;
for(i=1;i<=n;i++){
fin>>v[i].first>>v[i].second.first>>v[i].second.second;
}
sort(v+1,v+n+1);
for(i=1;i<=n;i++){
rez=query(v[i].second.first-1,v[i].second.second-1)+1;
update(v[i].second.first,v[i].second.second,rez);
rezf=max(rez,rezf);
}
fout<<rezf<<"\n";
for(int k=1;k<=n;k++){
for(i=v[k].second.first;i<=n;i+=(i&-i)){
for(j=v[k].second.second;j<=n;j+=(j&-j)){
aib[i][j]=0;
}
}
}
}
return 0;
}