Pagini recente » Cod sursa (job #163166) | Cod sursa (job #658442) | Cod sursa (job #633093) | Cod sursa (job #3135053) | Cod sursa (job #3321602)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("cutii.in"); // strudel
ofstream fout("cutii.out"); //cutii
int n,i,j,q,t,x,y,z,sum1;
int a[3600][3600];
struct aaa{
int x,y,z;
};
aaa v[3600];
auto cmp = [](const aaa& a, const aaa& b){
return a.x<b.x;
};
void update(int x, int y, int v){
for(int i=x;i<=n;i+=i&-i)
for(int j=y;j<=n;j+=j&-j)
a[i][j]=max(a[i][j],v);
}
int sum(int x, int y){
int sum=0;
for(int i=x;i>0;i-=i&-i)
for(int j=y;j>0;j-=j&-j)
sum=max(sum,a[i][j]);
return sum;
}
int main()
{
fin>>n>>t;
for(q=1;q<=t;q++){
for(i=1;i<=n;i++) fin>>x>>y>>z,v[i]={(int)x,(int)y,(int)z};
sort(v+1,v+n+1,cmp);
for(i=1;i<=n;){
vector<aaa> s;
vector<int> sm;
s.push_back(v[i++]);
while(v[i].x==v[i-1].x) s.push_back(v[i]),i++;
for(auto it:s){
int val=sum(it.y-1, it.z-1)+1;
sum1=max(sum1,val);
sm.push_back(val);
}
for(auto it=s.begin();it!=s.end();it++){
update(it->y, it->z, sm[it-s.begin()]);
}
}
fout<<sum1<<'\n';
for(i=1;i<=n;i++) for(j=1;j<=n;j++) a[i][j]=0;
sum1=0;
}
return 0;
}