Pagini recente » Cod sursa (job #2268110) | Cod sursa (job #1563608) | Cod sursa (job #589488) | Cod sursa (job #1478350) | Cod sursa (job #3267438)
#include <bits/stdc++.h>
#define int long long
using namespace std;
ifstream f("cutii.in");
ofstream g("cutii.out");
struct vec
{
int x,y,z;
}a[3505],lg[3505];
int n,t,dp[3505];
int nr;
void reset()
{
for (int i=0; i<=n; i++ )
{
lg[i].x=0;
lg[i].y=0;
lg[i].z=0;
}
}
bool cmp(vec a, vec b)
{
if ( a.x!=b.x)
return a.x<b.x;
if ( a.y!=b.y )
return a.y<b.y;
return a.z<b.z;
}
void add(int q, int w)
{
lg[q]=a[w];
}
void sclm()
{
lg[1].x=a[1].x;
lg[1].y=a[1].y;
lg[1].z=a[1].z;
nr=1;
for (int i=2; i<=n; i++ )
{
if ( a[i].x>lg[nr].x && a[i].y>lg[nr].y && a[i].z>lg[nr].z )
{
nr++;
lg[nr].x=a[i].x;
lg[nr].y=a[i].y;
lg[nr].z=a[i].z;
}
else
{
int st=1;
int dr=nr;
int poz=0;
while ( st<=dr )
{
int m=(st+dr)/2;
if ( a[i].x<lg[m].x || ( a[i].x==lg[m].x && a[i].y<lg[m].y ) || ( a[i].x==lg[m].x && a[i].y==lg[m].y && a[i].z<lg[m].z ) )
{
poz=m;
dr=m-1;
}
else st=m+1;
}
lg[poz].x=a[i].x;
lg[poz].y=a[i].y;
lg[poz].z=a[i].z;
}
}
}
signed main()
{
ios_base::sync_with_stdio(false);
f.tie(NULL);
g.tie(NULL);
f >> n >> t;
while ( t )
{
for (int i=1; i<=n; i++ )
f >> a[i].x >> a[i].y >> a[i].z;
sort(a+1,a+n+1,cmp);
sclm();
g << nr << '\n';
t--;
}
return 0;
}