Submission #101827


Source Code Expand

#include<iostream>
#include<algorithm>

#define REP(i, b, n) for(int i = b; i <(int)n; i++)
#define rep(i, n) REP(i, 0, n)

using namespace std;

const int MAX_N = 100000+10, MAX_M= 1000000+10;
const int MAX_LOG_N = 22;

int s[MAX_N*2], t[MAX_N*2];
int N, M;

pair<int, int> ps[MAX_N*4];

int next[MAX_LOG_N][MAX_N*2];

void solve(){
  int res = 0;
  rep(i, N){
    if(t[i] < s[i])t[i] += M;
    s[N+i] = s[i]+M;
    t[N+i] = t[i] + M;
  }
  rep(i, N*2){
    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++){
    rep(i, N*2){
      if(next[k][i] <0)next[k+1][i] = -1;
      else next[k+1][i] = next[k][next[k][i]];
    }
  }
  rep(i, N){
    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);
  }
  cout << res << endl;
}

int main(){
  while(cin >> N >> M){
    rep(i, N){
      cin >> s[i] >> t[i];
    }
    solve();
  }
}

Submission Info

Submission Time
Task A - Anime Master
User not_shiokawa
Language C++ (GCC 4.4.7)
Score 100
Code Size 1329 Byte
Status AC
Exec Time 269 ms
Memory 22568 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 27 ms 4000 KB
10 AC 26 ms 4132 KB
11 AC 26 ms 4000 KB
12 AC 27 ms 4000 KB
13 AC 27 ms 3988 KB
14 AC 26 ms 4000 KB
15 AC 26 ms 3996 KB
16 AC 27 ms 3960 KB
17 AC 26 ms 4012 KB
18 AC 26 ms 4000 KB
19 AC 27 ms 3996 KB
2 AC 27 ms 4012 KB
20 AC 26 ms 3936 KB
21 AC 26 ms 4012 KB
22 AC 26 ms 3996 KB
23 AC 26 ms 4004 KB
24 AC 26 ms 4136 KB
25 AC 26 ms 4004 KB
26 AC 27 ms 3940 KB
27 AC 27 ms 4004 KB
28 AC 27 ms 4132 KB
29 AC 26 ms 4008 KB
3 AC 27 ms 4052 KB
30 AC 26 ms 4000 KB
31 AC 26 ms 4004 KB
32 AC 26 ms 4012 KB
33 AC 27 ms 3936 KB
34 AC 27 ms 4000 KB
35 AC 26 ms 4132 KB
36 AC 26 ms 4000 KB
37 AC 25 ms 3996 KB
38 AC 25 ms 4124 KB
39 AC 26 ms 3992 KB
4 AC 26 ms 4132 KB
40 AC 27 ms 4004 KB
41 AC 26 ms 4004 KB
42 AC 27 ms 4124 KB
43 AC 26 ms 3964 KB
44 AC 26 ms 4008 KB
45 AC 26 ms 4004 KB
46 AC 30 ms 4016 KB
47 AC 27 ms 4004 KB
48 AC 26 ms 4128 KB
49 AC 28 ms 4008 KB
5 AC 28 ms 4124 KB
50 AC 27 ms 4004 KB
51 AC 26 ms 4012 KB
52 AC 29 ms 3936 KB
53 AC 26 ms 3996 KB
54 AC 26 ms 4008 KB
55 AC 27 ms 4136 KB
56 AC 26 ms 4008 KB
57 AC 26 ms 4008 KB
58 AC 212 ms 22568 KB
59 AC 223 ms 22564 KB
6 AC 27 ms 4008 KB
60 AC 213 ms 22568 KB
61 AC 221 ms 22568 KB
62 AC 228 ms 22568 KB
63 AC 230 ms 22564 KB
64 AC 269 ms 22568 KB
65 AC 82 ms 9260 KB
66 AC 134 ms 13864 KB
67 AC 85 ms 9500 KB
68 AC 35 ms 4908 KB
69 AC 30 ms 4208 KB
7 AC 26 ms 4004 KB
70 AC 32 ms 4516 KB
71 AC 27 ms 4012 KB
72 AC 28 ms 4008 KB
73 AC 27 ms 4140 KB
74 AC 30 ms 4396 KB
75 AC 32 ms 4772 KB
76 AC 40 ms 5412 KB
77 AC 33 ms 4764 KB
78 AC 37 ms 5288 KB
79 AC 30 ms 4384 KB
8 AC 26 ms 4000 KB
80 AC 28 ms 4268 KB
81 AC 37 ms 5100 KB
82 AC 34 ms 4964 KB
83 AC 33 ms 4776 KB
84 AC 42 ms 5788 KB
85 AC 42 ms 5728 KB
86 AC 33 ms 4776 KB
87 AC 35 ms 4892 KB
88 AC 34 ms 4900 KB
89 AC 46 ms 5868 KB
9 AC 26 ms 4008 KB