Pagini recente » Cod sursa (job #815233) | Cod sursa (job #1627501) | Cod sursa (job #599493) | Cod sursa (job #1431677) | Cod sursa (job #1089835)
#include <fstream>
#include <cstring>
using namespace std;
ifstream fin("cutii.in");
ofstream fout("cutii.out");
int n,t,val,X,Y;
int aib[3501][3501];
int x[3501],y[3501],z[3501],v[3501];
int q1[3501],q2[3501];
int LSB (int i)
{
return i&(-i);
}
void query (int i, int jj)
{
for (; i > 0; i -= LSB(i))
for (int j=jj;j > 0; j -= LSB(j))
{
val = max (aib[i][j],val);
}
}
void update (int i, int jj)
{
for (; i<= n; i += LSB(i))
for (int j = jj; j<= n; j += LSB(j))
{
aib[i][j] = max (aib[i][j],val);
}
}
void reset (int i, int jj)
{
for (; i<= n; i += LSB(i))
for (int j=jj; j<= n; j += LSB(j))
{
aib[i][j] = 0;
}
}
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;
}
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";
for (int i=1; i<=n; ++i)
{
reset (y[v[i]],z[v[i]]);
}
}
}