Pagini recente » Cod sursa (job #2523045) | Cod sursa (job #2823165) | Cod sursa (job #1342789) | Cod sursa (job #844210) | Cod sursa (job #1816909)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream si("cutii.in");
ofstream so("cutii.out");
struct cutie
{
int x,y,z;
bool operator <(const cutie &val)const
{
return x<val.x;
}
}v[3510];
int aib[3505][3505],n;
void upd(int x,int y,int s)
{
int i,j;
for(i=x;i<=n;i+=i&(-i))
for(j=y;j<=n;j+=j&(-j))
aib[i][j]=max(aib[i][j],s);
}
int query(int x,int y)
{
int s=0,i,j;
for(i=x;i>=1;i-=i&(-i))
for(j=y;j>=1;j-=j&(-j))
s=max(s,aib[i][j]);
return s;
}
void gol(int x,int y)
{
int i,j;
for(i=x;i<=n;i+=i&(-i))
for(j=y;j<=n;j+=j&(-j))
aib[i][j]=0;
}
int main()
{
int q;
si>>n>>q;
int i;
while(q--)
{
for(i=1;i<=n;++i)
si>>v[i].x>>v[i].y>>v[i].z;
sort(v+1,v+1+n);
int s,maxx=0;
for(i=1;i<=n;++i)
{
s=query(v[i].y,v[i].z)+1;
maxx=max(maxx,s);
upd(v[i].y,v[i].z,s);
}
so<<maxx<<'\n';
for(i=1;i<=n;++i)
gol(v[i].y,v[i].z);
}
return 0;
}