Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <algorithm>
- #include <cmath>
- using vii = std::vector<std::pair<int, int> >;
- using vi = std::vector<int>;
- int resolver(vi& g, vii const& v, int horafin, int i) {
- if (g[i] != -1) return g[i];
- if (i == v.size() - 1) {
- if (v[i].first >= horafin) return g[i] = 1;
- else return g[i] = 0;
- }
- if (v[i].first >= horafin) {
- int a = 1 + resolver(g, v, v[i].first + v[i].second + 10, i + 1);
- int b = resolver(g, v, horafin, i + 1);
- return g[i] = std::max(a, b);
- }
- else return g[i] = resolver(g, v, horafin, i + 1);
- }
- bool resuelveCaso() {
- int n; std::cin >> n;
- if (n == 0) return false;
- vii peliculas(n);
- for (int i = 0; i < n; ++i) {
- int h, m, t; char aux;
- std::cin >> h >> aux >> m >> t;
- peliculas[i] = std::make_pair(h * 60 + m, t);
- }
- std::sort(peliculas.begin(), peliculas.end());
- vi g(n, -1);
- int sol = resolver(g, peliculas, 0, 0);
- std::cout << sol << std::endl;
- return true;
- }
- int main() {
- while (resuelveCaso());
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement