Pagini recente » Cod sursa (job #501889) | Cod sursa (job #2128600) | Cod sursa (job #2889338) | Cod sursa (job #2368011) | Cod sursa (job #1089827)
#include <fstream>
#include <cstring>
using namespace std;
ifstream fin("cutii.in");
ofstream fout("cutii.out");
short n,t,val,X,Y;
short aib[3501][3501];
short x[3501],y[3501],z[3501],v[3501];
short max (short a, short b)
{
if (a > b)
return a;
return b;
}
int LSB (int i)
{
return i&(-i);
}
void query (int i, int j)
{
for (; i > 0; i -= LSB(i))
for (;j > 0; j -= LSB(j))
{
val = max (aib[i][j],val);
}
}
void update (int i, int j)
{
for (; i<= n; i += LSB(i))
for (; j<= n; j += LSB(j))
{
aib[i][j] = max (aib[i][j],val);
}
}
int main()
{
fin>>n>>t;
for (;t; --t)
{
for (int i=1; i<=n; ++i)
{
fin>>x[i]>>y[i]>>z[i];
v[x[i]] = i;
}
memset (aib,0,sizeof(aib));
for (int i=1; i<=n; ++i)
{
X = y[v[i]]-1; Y = z[v[i]]-1;
val = 0;
query (X,Y);
val++;
X++; Y++;
update (X,Y);
}
val = 0;
query (n,n);
fout<<val<<"\n";
}
}