Pagini recente » Cod sursa (job #2494728) | Cod sursa (job #3171966) | Cod sursa (job #2748653) | Cod sursa (job #216391) | Cod sursa (job #1267304)
# include <bits/stdc++.h>
using namespace std;
ifstream fi("cutii.in");
ofstream fo("cutii.out");
struct cc
{
int x,y,z;
} s[3505];
int n;
short d[3505];
short dp[3505][3505];
bool cmp(cc a,cc b)
{
return (a.z<b.z);
}
short query(int x,int y)
{
short ans=0;
for (int i=x;i;i-=(i & -i))
for (int j=y;j;j-=(j & -j)) ans=max(ans,dp[i][j]);
return ans;
}
void update(int x,int y,short z)
{
for (int i=x;i<=n;i+=(i & -i))
for (int j=y;j<=n;j+=(j & -j)) dp[i][j]=max(dp[i][j],z);
}
int main(void)
{
int t;
fi>>n>>t;
while (t --)
{
short ans=0;
for (int i=1;i<=n;++i) fi>>s[i].x>>s[i].y>>s[i].z;
sort(s+1,s+1+n,cmp);
memset(dp,0,sizeof(dp));
for (int i=1;i<=n;++i) d[i]=query(s[i].x,s[i].y)+1,ans=max(ans,d[i]),update(s[i].x,s[i].y,d[i]);
fo << ans << '\n';
}
return 0;
}