Pagini recente » Cod sursa (job #1834119) | Cod sursa (job #3246575) | Cod sursa (job #2442811) | Cod sursa (job #2265990) | Cod sursa (job #3266764)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;
ifstream f("cutii.in");
ofstream g("cutii.out");
const int nMax = 3e3 + 5e2 + 5;
int T, n;
int lis[nMax];
struct DIMENSIUNI
{
int x, y, z;
}a[nMax];
bool cmp1(DIMENSIUNI z,DIMENSIUNI b)
{
return (z.x < b.x && z.y < b.y && z.z < b.z);
}
bool cmp2(DIMENSIUNI z,DIMENSIUNI b)
{
return (z.x > b.x && z.y > b.y && z.z > b.z) || (z.x == b.x && z.y == b.y && z.z == b.z);
}
bool cmp(DIMENSIUNI z,DIMENSIUNI b)
{
if (z.x != b.x)return z.x < b.x;
if (z.y != b.y)return z.y < b.y;
if (z.z != b.z)return z.z < b.z;
return cmp1(z,b);
}
bool cmp3(DIMENSIUNI z,DIMENSIUNI b)
{
if (z.x != b.x)return z.x > b.x;
if (z.y != b.y)return z.y > b.y;
if (z.z != b.z)return z.z > b.z;
return !cmp1(z,b);
}
int main()
{
f >> n >> T;
while(T){
for (int i = 1;i <= n;i++){
f >> a[i].x >> a[i].y >> a[i].z;
lis[i] = 0;
}
sort(a+1,a+n+1,cmp);
vector<DIMENSIUNI> v;
//g << v[1].x << " ";
v.push_back(a[1]);
for (int i = 2;i <= n;i++){
if (cmp2(a[i],v.back()) == true)v.push_back(a[i]);//,cout << 1 << " ";
else{
auto p = upper_bound(v.begin(),v.end(),a[i],cmp);
if (p != v.end())*p = a[i];
}
}
g << v.size() << '\n';
T--;
}
}