Pagini recente » Cod sursa (job #2902661) | Cod sursa (job #1938264) | Cod sursa (job #448381) | Cod sursa (job #2400588) | Cod sursa (job #1595028)
#include <fstream>
#include <vector>
#include <algorithm>
#define x second.first
#define y second.second
#define z first
using namespace std;
ifstream is("cutii.in");
ofstream os("cutii.out");
using VI = vector<int>;
using VVI = vector<VI>;
using VIII = vector<pair<int, pair<int, int>>>;
int n, t, answ, s;
VVI a;
VIII c;
void Read();
void Update(int px, int py, int val);
void Clear(int px, int py);
int Sum(int px, int py);
int main()
{
is >> n >> t;
a = VVI(n + 1, VI(n + 1));
c = VIII(n + 1);
while ( t-- )
{
Read();
answ = 0;
for ( int i = 1; i <= n; ++i )
{
s = Sum(c[i].x - 1, c[i].y - 1) + 1;
Update(c[i].x, c[i].y, s);
answ = max(answ, s);
}
os << answ << "\n";
if ( t )
for ( int i = 1; i <= n; ++i )
Clear(c[i].x, c[i].y);
}
is.close();
os.close();
return 0;
}
void Clear(int px, int py)
{
for ( int i = px; i <= n; i += i & -i )
for ( int j = py; j <= n; j += j & -j )
a[i][j] = 0;
}
void Update(int px, int py, int val)
{
for ( int i = px; i <= n; i += i & -i )
for ( int j = py; j <= n; j += j & -j )
a[i][j] = max(a[i][j], val);
}
int Sum(int px, int py)
{
int s = 0;
for ( ; px; px -= px & -px )
for ( int j = py; j; j -= j & -j )
s += a[px][j];
return s;
}
void Read()
{
for ( int i = 1; i <= n; ++i )
is >> c[i].z >> c[i].x >> c[i].y;
sort(c.begin() + 1, c.begin() + n + 1);
}