Pagini recente » Cod sursa (job #2097330) | Cod sursa (job #2628023) | Cod sursa (job #1813449) | Cod sursa (job #691686) | Cod sursa (job #2154053)
#include <iostream>
#include <fstream>
#include <algorithm>
#define dim 3502
#define zeros(x) ((x^(x-1))&x)
using namespace std;
ifstream fin("cutii.in");
ofstream fout("cutii.out");
struct cutie
{
int x,y,z;
}c[dim];
int AIB[dim][dim],val;
int N,T;
bool cmp(cutie a, cutie b)
{
return a.x<b.x;
}
void update(int x,int y,int nr)
{
for(int i=x;i<=N;i=i+zeros(i))
{
for(int j=y;j<=N;j=j+zeros(j))
AIB[i][j]=max(AIB[i][j],nr);
}
}
void init(int x,int y)
{
for(int i=x;i<=N;i=i+zeros(i))
{ for(int j=y;j<=N;j=j+zeros(j))
AIB[i][j]=0;}
}
int query(int x,int y)
{
int maxi=0;
for(int i=x;i>=1;i=i-zeros(i))
{
for(int j=y;j>=1;j=j-zeros(j))
maxi=max(maxi,AIB[i][j]);
}
return maxi;
}
int main()
{
fin>>N>>T;
int i,j;
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);
for(int k=1;k<=N;k++)
{
val=1+query(c[k].y-1,c[k].z-1);
update(c[k].y,c[k].z,val);
}
fout<<query(N,N)<<"\n";
for(int k=1;k<=N;k++)
init(c[k].y,c[k].z);
}
return 0;
}