Pagini recente » Istoria paginii runda/maplictisesc/clasament | Cod sursa (job #777622) | Cod sursa (job #2747943) | Cod sursa (job #395376) | Cod sursa (job #805439)
Cod sursa(job #805439)
#include<fstream>
using namespace std;
struct cutie
{
int x,y,z;
};
cutie a[3501];
int v[3501][3501],i,o,t,n,mx,s,j;
bool cmp(cutie a,cutie b)
{
return a.z<b.z;
}
int query(int x,int y)
{
int i,j,s=0;
for (i=x;i>0;i=i & (i-1))
for (j=y;j>0;j=j & (j-1))
s=max(s,v[i][j]);
return s;
}
void update(int x,int y,int z)
{
int i,j;
for (i=x;i<=n;i=(i | (i-1))+1)
for (j=y;j<=n;j=(j | (j-1))+1)
v[i][j]=max(v[i][j],z);
}
int main()
{
ifstream f("cutii.in");
ofstream g("cutii.out");
f >> n >> t;
for (o=1;o<=t;o++)
{
mx=0;
for (i=1;i<=n;i++)
f >> a[i].x >> a[i].y >> a[i].z;
sort(a+1,a+n+1,cmp);
for (i=1;i<=n;i++)
{
s=query(a[i].x,a[i].y);
mx=max(s,mx);
update(a[i].x,a[i].y,s+1);
}
g << mx+1 << "\n";
for (i=1;i<=n;i++)
for (j=1;j<=n;j++)
v[i][j]=0;
}
return 0;
}