Submission details
Task:Binge watching
Sender:aalto25b_011
Submission time:2025-09-10 17:49:51 +0300
Language:C++ (C++20)
Status:READY
Result:
Test results
testverdicttime
#1ACCEPTED0.00 sdetails
#2ACCEPTED0.00 sdetails
#3ACCEPTED0.00 sdetails
#4--details
#5ACCEPTED0.05 sdetails
#6ACCEPTED0.58 sdetails
#7ACCEPTED0.00 sdetails
#8ACCEPTED0.00 sdetails
#9ACCEPTED0.00 sdetails

Compiler report

input/code.cpp: In function 'int chain_movies(vpi&, vpi)':
input/code.cpp:40:15: warning: variable 'm' set but not used [-Wunused-but-set-variable]
   40 |     for (auto m : chain) {
      |               ^
input/code.cpp: In function 'int main()':
input/code.cpp:82:13: warning: variable 'm' set but not used [-Wunused-but-set-variable]
   82 |   for (auto m : chain) {
      |             ^

Code

// #include <bits/stdc++.h>
#include <ios>
#include <iostream>
#include <vector>
// #include <iostream>
using namespace std;
typedef long long ll;
typedef vector<int> vi;
typedef pair<int, int> pi;
typedef vector<pair<int, int>> vpi;
#define F first
#define S second
#define PB push_back
#define MP make_pair
#define DO_DBG 0

#if DO_DBG
#define DBG(x) cerr << x << "\n";
#else
#define DBG(x)
#endif

int chain_movies(vpi &all_movies, vpi chain) {
  bool nomore = true;
  int max = 0;

  for (auto m : all_movies) {
    if (chain.empty() || (m.F >= chain.back().S)) {
      nomore = false;
      vpi nc = chain;
      nc.push_back(m);
      int chain_len = chain_movies(all_movies, nc);
      if (chain_len > max) {
        max = chain_len;
      }
    }
  }
  if (nomore) {
    DBG("NEW CHAIN:")
    for (auto m : chain) {
      DBG("start: " << m.F << ", end: " << m.S)
    }
    DBG("size: " << chain.size() << "\n")
    return chain.size();
  } else {
    return max;
  }
}

int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  DBG("INIT")
  int n;
  cin >> n;

  vpi movies;
  for (int i = 0; i < n; i++) {
    int start, end;
    cin >> start >> end;
    movies.PB(MP(start, end));
  }
  vpi chain;
  while (1) {
    int earliest_end = 0;
    pi nxt = {};

    for (auto m : movies) {
      if ((earliest_end == 0 || m.S < earliest_end) &&
          (chain.empty() || m.F >= chain.back().S)) {
        earliest_end = m.S;
        nxt = m;
      }
    }
    if (earliest_end == 0) {
      break;
    }
    chain.push_back(nxt);
  }

  DBG("NEW CHAIN:")
  for (auto m : chain) {
    DBG("start: " << m.F << ", end: " << m.S)
  }
  DBG("size: " << chain.size() << "\n")

  cout << chain.size() << "\n";
}

Test details

Test 1

Verdict: ACCEPTED

input
10
6 7
4 5
8 9
2 3
...

correct output
10

user output
10

Test 2

Verdict: ACCEPTED

input
10
1 1000
1 1000
1 1000
1 1000
...

correct output
1

user output
1

Test 3

Verdict: ACCEPTED

input
10
404 882
690 974
201 255
800 933
...

correct output
4

user output
4

Test 4

Verdict:

input
200000
177494 177495
157029 157030
6030 6031
15209 15210
...

correct output
200000

user output
(empty)

Test 5

Verdict: ACCEPTED

input
200000
1 1000000000
1 1000000000
1 1000000000
1 1000000000
...

correct output
1

user output
1

Test 6

Verdict: ACCEPTED

input
200000
82334756 323555178
958182284 981100325
649818003 678160906
801994655 889397498
...

correct output
725

user output
725

Test 7

Verdict: ACCEPTED

input
3
1 1000
2 3
5 6

correct output
2

user output
2

Test 8

Verdict: ACCEPTED

input
3
3 4
5 6
7 8

correct output
3

user output
3

Test 9

Verdict: ACCEPTED

input
2
1 2
3 4

correct output
2

user output
2