Pagini recente » Cod sursa (job #235261) | Cod sursa (job #1589259) | Cod sursa (job #1315821) | Cod sursa (job #1838050) | Cod sursa (job #2461925)
#include <iostream>
#include <fstream>
#include <cstring>
#include <algorithm>
using namespace std;
ifstream in("cutii.in");
ofstream out("cutii.out");
const int dim = 3505;
struct cutie
{
int x;
int y;
int z;
}c[dim];
int n,teste,aib[dim][dim],best[dim];
bool cmp(cutie a,cutie b)
{
return (a.x < b.x);
}
int query(int x,int y)
{
int ans = 0;
for (int i=x; i>0; i -=i&(-i))
{
for (int j=y; j>0; j-=j&(-j))
{
ans = max(ans , aib[i][j]);
}
}
return ans;
}
void update(int x,int y,int val)
{
for (int i=x; i<=n; i +=i&(-i))
{
for (int j=y; j<=n; j+=j&(-j))
{
aib[i][j] = max(aib[i][j] , val);
}
}
}
int main()
{
in >> n >> teste;
int rasp = -1;
while (teste)
{
teste--;
for (int i=1; i<=n; i++)
{
in >> c[i].x >> c[i].y >> c[i].z;
}
sort(c+1,c+n+1,cmp);
rasp = 0;
for (int i=1; i<=n; i++)
{
best[i] = query(c[i].y , c[i].z) + 1;
rasp = max(rasp , best[i]);
update(c[i].y , c[i].z , best[i]);
}
out << rasp << "\n";
memset(aib, 0 , sizeof(aib));
}
return 0;
}