Pagini recente » Cod sursa (job #1987693) | Cod sursa (job #889537) | Borderou de evaluare (job #1931569) | Borderou de evaluare (job #1567786) | Cod sursa (job #2628268)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("cutii.in");
ofstream fout("cutii.out");
int q, n, a, b, c, len, last;
pair<int, int> cutie[3600];
bitset<3600> used;
int v[3600];
int bin_search(int poz) {
int st = 1, dr = len;
while (st <= dr) {
int mij = (st + dr) / 2;
if (cutie[poz].second > v[mij])
st = mij + 1;
else
dr = mij - 1;
}
return st;
}
int main() {
fin >> n >> q;
while (q--) {
for (int i = 1; i <= n; i++) {
fin >> a >> b >> c;
cutie[a] = make_pair(b, c);
}
for (int i = 1; i <= n; i++)
used[i] = false;
int start = 1, sol = 0;
while (start <= n) {
len = 0, last = 0;
for (int i = start; i <= n; i++)
if (cutie[i].first > cutie[last].first) {
int poz = bin_search(i);
len = max(len, poz);
if (poz == len || cutie[i].second < v[poz])
v[poz] = cutie[i].second;
last = i;
used[last] = true;
}
while (used[start])
start++;
sol = max(sol, len);
}
fout << sol << '\n';
}
return 0;
}