Pagini recente » Cod sursa (job #2509170) | Cod sursa (job #1645758) | Cod sursa (job #1245680) | Cod sursa (job #1932947) | Cod sursa (job #2046463)
#include<fstream>
#include<algorithm>
using namespace std;
ifstream f("cutii.in");
ofstream g("cutii.out");
struct cutie
{
int x;
int y;
int z;
} c[3503];
bool cmp(cutie a, cutie b)
{
if(a.z==b.z)
if(a.y==b.y)
return a.x<b.x;
else return a.y<b.y;
return a.z<b.z;
}
int n, teste, i, aib[3503][3503], sol;
int query(int x, int y)
{
int r=0;
for(int i=x;i;i-=(i & -i))
for(int j=y;j;j-=(j & -j))
r+=aib[i][j];
return r;
}
void update(int x, int y, int r)
{
for(int i=x;i<=n;i+=(i & -i))
for(int j=y;j<=n;j+=(j & -j))
aib[i][j]=r;
}
int main()
{
f>>n>>teste;
while(teste!=0)
{
for(i=1;i<=n;i++)
f>>c[i].x>>c[i].y>>c[i].z;
sort(c+1,c+n+1, cmp);
for(i=1;i<=n;i++)
{
sol=query(c[i].x-1, c[i].y-1)+1;
update(c[i].x, c[i].y, sol);
}
g<<sol<<"\n";
teste--;
}
return 0;
}