Pagini recente » Cod sursa (job #2453869) | Cod sursa (job #2903832) | Cod sursa (job #955095) | Cod sursa (job #2434964) | Cod sursa (job #2843391)
#include <fstream>
#include <vector>
#include <bitset>
#include <algorithm>
using namespace std;
ifstream cin("cutii.in");
ofstream cout("cutii.out");
class Info{
public:
int x;
int y;
int z;
vector<int> boxes;
};
bool cmp(Info a,Info b){
if(a.x==b.x){
if(a.y == b.y){
return a.z<b.z;
}
return a.y<b.y;
}
return a.x<b.x;
}
int n,t;
vector<Info> v;
vector<int> dp;
vector<bitset<1>> visited;
bool canPlace_A_Over_B(Info a,Info b){
return a.x>b.x && a.y>b.y && a.z>b.z;
}
int howManyBoxes(){
int sol = 0;
fill(dp.begin()+1, dp.end(), 0);
for(int i=1;i<=n;i++){
for(int j=1;j<=i-1;j++){
if(canPlace_A_Over_B(v[i],v[j])){
if (dp[i] < dp[j]+1){
dp[i] = dp[j]+1;
v[j].boxes.push_back(i);
}
}
else
break;
}
}
for(int i=1;i<=n;i++){
sol = max(sol,(int)v[i].boxes.size());
}
return sol+1;
}
void read(){
cin>>n>>t;
v.resize(n+1);
dp.resize(n+1);
visited.resize(n+1);
for(int i=1;i<=t;i++){
for(int j=1;j<=n;j++){
v[j].boxes.clear();
cin>>v[j].x>>v[j].y>>v[j].z;
}
sort(v.begin()+1,v.end(),cmp);
cout<<howManyBoxes()<<'\n';
}
}
int main() {
read();
return 0;
}