Submission details
Task:Binge watching
Sender:aalto25b_006
Submission time:2025-09-10 16:25:06 +0300
Language:C++ (C++17)
Status:READY
Result:ACCEPTED
Test results
testverdicttime
#1ACCEPTED0.01 sdetails
#2ACCEPTED0.01 sdetails
#3ACCEPTED0.01 sdetails
#4ACCEPTED0.14 sdetails
#5ACCEPTED0.08 sdetails
#6ACCEPTED0.18 sdetails
#7ACCEPTED0.01 sdetails
#8ACCEPTED0.01 sdetails
#9ACCEPTED0.01 sdetails

Code

#include <iostream>
#include <vector>
#include <algorithm>
#include <cstring>

using namespace std;

const int N = 4e5 + 5;

struct fenwick_tree {
  int f[N];

  fenwick_tree() {
    memset(f, 0, sizeof(f));
  }

  void upd(int i, int x) {
    for (; i < N; i += i & -i) {
      f[i] = max(f[i], x);
    }
  }

  int get(int i) {
    int r = 0;
    for (; i > 0; i -= i & -i) {
      r = max(r, f[i]);
    }
    return r;
  }
};

int n;
pair<int, int> p[N];
vector<int> v;
fenwick_tree ft;
 
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cin >> n;
  for (int i = 1; i <= n; i++) {
    cin >> p[i].first >> p[i].second;
    v.emplace_back(p[i].first);
    v.emplace_back(p[i].second);
  }
  sort(p + 1, p + n + 1);
  sort(v.begin(), v.end());
  v.erase(unique(v.begin(), v.end()), v.end());
  for (int i = 1; i <= n; i++) {
    p[i].first = lower_bound(v.begin(), v.end(), p[i].first) - v.begin() + 1;
    p[i].second = lower_bound(v.begin(), v.end(), p[i].second) - v.begin() + 1;
    ft.upd(p[i].second, 1 + ft.get(p[i].first));
  }
  cout << ft.get(N - 1);
  return 0;
}

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: ACCEPTED

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

correct output
200000

user output
200000

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