Cod sursa(job #2628268)

Utilizator CosminMorarMorar Cosmin Andrei CosminMorar Data 15 iunie 2020 12:30:47
Problema Cutii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.04 kb
#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;
}