Pagini recente » Cod sursa (job #312666) | Cod sursa (job #1761522) | Cod sursa (job #1281334) | concurs_2014 | Cod sursa (job #2097774)
#include <fstream>
#include <algorithm>
#define VAL 3505
#define INF 1000000000
using namespace std;
ifstream fin("cutii.in");
ofstream fout("cutii.out");
struct cutie
{
int x, y, z;
};
cutie C[VAL];
int N, T, i, j, X, Y, ANS;
int ind[VAL][4], dp[VAL];
bool cmp(cutie A, cutie 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 Binary_Search(int nr, int X)
{
int be=0, en=j;
int mid, ans=0;
while (be<=en)
{
mid=(be+en) / 2;
if (ind[mid][nr]<=X)
{
ans=mid;
be=mid+1;
}
else
en=mid-1;
}
return ans;
}
int main()
{
fin >> N >> T;
for (i=1; i<=T; i++)
{
for (j=1; j<=N; j++)
fin >> C[j].x >> C[j].y >> C[j].z;
sort(C+1, C+N+1, cmp);
ANS=0;
for (j=1; j<=N; j++)
{
ind[j][2]=INF;
ind[j][3]=INF;
X=Binary_Search(2, C[j].y);
Y=Binary_Search(3, C[j].z);
dp[j]=min(X, Y)+1;
ANS=max(ANS, dp[j]);
ind[dp[j]][2]=min(ind[dp[j]][2], C[j].y);
ind[dp[j]][3]=min(ind[dp[j]][3], C[j].z);
}
fout << ANS << '\n';
}
fin.close();
fout.close();
return 0;
}