Submission #101842


Source Code Expand

#include <iostream>
#include <iomanip>
#include <sstream>
#include <cstdio>
#include <string>
#include <vector>
#include <algorithm>
#include <complex>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <cassert>
#include <climits>
#include <queue>
#include <set>
#include <map>
#include <valarray>
#include <bitset>
#include <stack>
using namespace std;

#define REP(i,n) for(int i=0;i<(int)n;++i)
#define FOR(i,c) for(__typeof((c).begin())i=(c).begin();i!=(c).end();++i)
#define ALL(c) (c).begin(), (c).end()
#define chmax(a,b) (a<(b)?(a=b,1):0)
#define chmin(a,b) (a>(b)?(a=b,1):0)
#define valid(y,x,h,w) (0<=y&&y<h&&0<=x&&x<w)
typedef long long ll;
typedef pair<int,int> pii;
const int INF = 1<<29;
const double PI = acos(-1);
const double EPS = 1e-8;

const int MAX_N = 100000 * 2 + 10;
const int MAX_LOG_N = 20;
int N, M;
int s[MAX_N * 2], t[MAX_N * 2];

pii ps[MAX_N * 4];
int next[MAX_LOG_N][MAX_N * 2];

int solve() {
  int res = 0;

  for (int i = 0; i < N; ++i) {
    if (t[i] < s[i]) t[i] += M;
    s[N+i] = s[i] + M;
    t[N+i] = t[i] + M;
  }

  for (int i = 0; i < N * 2; ++i) {
    ps[i] = make_pair(t[i], i);
    ps[N*2 + i] = make_pair(s[i], N*2 + i);
  }
  sort(ps, ps + N*4);

  int last = -1;
  for(int i = N*4-1; i >= 0; --i) {
    int id = ps[i].second;
    if (id < N*2) {
      next[0][id] = last;
    } else {
      id -= N*2;
      if (last < 0 || t[last] > t[id]) {
        last = id;
      }
    }
  }

  for (int k = 0; k + 1 < MAX_LOG_N; ++k) {
    for (int i = 0; i < N * 2; ++i) {
      if (next[k][i] < 0) next[k+1][i] = -1;
      else next[k+1][i] = next[k][next[k][i]];
    }
  }

  for (int i = 0; i < N; ++i) {
    int tmp = 0, j = i;
    for (int k = MAX_LOG_N - 1; k >= 0; --k) {
      int j2 = next[k][j];
      if (j2 >= 0 && t[j2] <= s[i] + M) {
        j = j2;
        tmp |= 1<<k;
      }
    }
    res = max(res, tmp + 1);
  }
  return res;
}

int main() {
  cin>>N>>M;
  for (int i = 0; i < N; ++i) cin>>s[i]>>t[i];
  cout<<solve()<<endl;
}

Submission Info

Submission Time
Task A - Anime Master
User hki
Language C++ (G++ 4.6.4)
Score 100
Code Size 2096 Byte
Status AC
Exec Time 281 ms
Memory 24292 KB

Judge Result

Set Name All
Score / Max Score 100 / 100
Status
AC × 89
Set Name Test Cases
All 1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 3, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 4, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 5, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 6, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 7, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 8, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 9
Case Name Status Exec Time Memory
1 AC 31 ms 7204 KB
10 AC 30 ms 7084 KB
11 AC 32 ms 7012 KB
12 AC 31 ms 7076 KB
13 AC 32 ms 7012 KB
14 AC 31 ms 7064 KB
15 AC 31 ms 7076 KB
16 AC 31 ms 7072 KB
17 AC 29 ms 7076 KB
18 AC 30 ms 7084 KB
19 AC 31 ms 7080 KB
2 AC 29 ms 7076 KB
20 AC 30 ms 7072 KB
21 AC 32 ms 7076 KB
22 AC 32 ms 7076 KB
23 AC 29 ms 7068 KB
24 AC 31 ms 7072 KB
25 AC 33 ms 7076 KB
26 AC 30 ms 7032 KB
27 AC 31 ms 7072 KB
28 AC 31 ms 7084 KB
29 AC 32 ms 7072 KB
3 AC 31 ms 7080 KB
30 AC 30 ms 7080 KB
31 AC 30 ms 7204 KB
32 AC 30 ms 7204 KB
33 AC 33 ms 7020 KB
34 AC 31 ms 7076 KB
35 AC 30 ms 7076 KB
36 AC 29 ms 7072 KB
37 AC 29 ms 7080 KB
38 AC 32 ms 7084 KB
39 AC 30 ms 7080 KB
4 AC 31 ms 7072 KB
40 AC 31 ms 7028 KB
41 AC 30 ms 7064 KB
42 AC 31 ms 7008 KB
43 AC 31 ms 7008 KB
44 AC 31 ms 7076 KB
45 AC 31 ms 7072 KB
46 AC 31 ms 7072 KB
47 AC 31 ms 7080 KB
48 AC 31 ms 7032 KB
49 AC 31 ms 7076 KB
5 AC 30 ms 7068 KB
50 AC 31 ms 7084 KB
51 AC 31 ms 7084 KB
52 AC 30 ms 7072 KB
53 AC 29 ms 7032 KB
54 AC 29 ms 7072 KB
55 AC 29 ms 7064 KB
56 AC 32 ms 7136 KB
57 AC 29 ms 7072 KB
58 AC 228 ms 24220 KB
59 AC 222 ms 24224 KB
6 AC 29 ms 7196 KB
60 AC 205 ms 24240 KB
61 AC 230 ms 24232 KB
62 AC 233 ms 24292 KB
63 AC 235 ms 24256 KB
64 AC 281 ms 24232 KB
65 AC 85 ms 11936 KB
66 AC 141 ms 16112 KB
67 AC 93 ms 12132 KB
68 AC 40 ms 7980 KB
69 AC 33 ms 7268 KB
7 AC 37 ms 7072 KB
70 AC 38 ms 7580 KB
71 AC 31 ms 7136 KB
72 AC 33 ms 7140 KB
73 AC 32 ms 7204 KB
74 AC 35 ms 7456 KB
75 AC 38 ms 7852 KB
76 AC 45 ms 8364 KB
77 AC 38 ms 7844 KB
78 AC 46 ms 8304 KB
79 AC 34 ms 7464 KB
8 AC 31 ms 7072 KB
80 AC 33 ms 7332 KB
81 AC 42 ms 8104 KB
82 AC 40 ms 7976 KB
83 AC 38 ms 7720 KB
84 AC 48 ms 8700 KB
85 AC 47 ms 8608 KB
86 AC 37 ms 7704 KB
87 AC 40 ms 7976 KB
88 AC 39 ms 8036 KB
89 AC 48 ms 8824 KB
9 AC 31 ms 7080 KB