Submission #101848


Source Code Expand

#include <iostream>
#include <algorithm>
#include <vector>
#include <cstdio>
using namespace std;

#define rep(i, n) for(int i=0; i<int(n); i++)
#define mp make_pair

#define MAX_N 100010
#define MAX_LOG_N 17

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

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] = mp(t[i], i);
		ps[N*2 + i] = mp(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);
	}

	printf("%d\n", res);
}

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

Submission Info

Submission Time
Task A - Anime Master
User negainoido
Language C++ (GCC 4.4.7)
Score 100
Code Size 1270 Byte
Status AC
Exec Time 290 ms
Memory 18736 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 25 ms 3876 KB
10 AC 27 ms 3880 KB
11 AC 26 ms 3960 KB
12 AC 27 ms 3880 KB
13 AC 26 ms 3876 KB
14 AC 25 ms 3996 KB
15 AC 25 ms 4004 KB
16 AC 26 ms 3940 KB
17 AC 27 ms 3880 KB
18 AC 26 ms 4000 KB
19 AC 25 ms 4004 KB
2 AC 26 ms 4000 KB
20 AC 26 ms 3996 KB
21 AC 26 ms 3940 KB
22 AC 26 ms 3884 KB
23 AC 26 ms 3880 KB
24 AC 25 ms 4000 KB
25 AC 28 ms 3884 KB
26 AC 25 ms 4128 KB
27 AC 27 ms 3884 KB
28 AC 26 ms 3936 KB
29 AC 26 ms 4008 KB
3 AC 27 ms 3876 KB
30 AC 26 ms 4004 KB
31 AC 26 ms 4000 KB
32 AC 25 ms 4124 KB
33 AC 26 ms 4128 KB
34 AC 26 ms 4008 KB
35 AC 27 ms 3876 KB
36 AC 33 ms 3936 KB
37 AC 27 ms 3880 KB
38 AC 27 ms 4004 KB
39 AC 27 ms 3880 KB
4 AC 27 ms 4008 KB
40 AC 27 ms 4008 KB
41 AC 26 ms 3880 KB
42 AC 27 ms 3880 KB
43 AC 27 ms 3960 KB
44 AC 27 ms 3880 KB
45 AC 26 ms 4008 KB
46 AC 25 ms 3880 KB
47 AC 26 ms 3880 KB
48 AC 26 ms 3988 KB
49 AC 25 ms 3872 KB
5 AC 26 ms 4004 KB
50 AC 26 ms 3876 KB
51 AC 27 ms 3876 KB
52 AC 26 ms 3880 KB
53 AC 26 ms 3880 KB
54 AC 27 ms 4008 KB
55 AC 25 ms 4000 KB
56 AC 25 ms 4000 KB
57 AC 27 ms 4004 KB
58 AC 200 ms 18720 KB
59 AC 215 ms 18680 KB
6 AC 25 ms 3876 KB
60 AC 203 ms 18716 KB
61 AC 214 ms 18724 KB
62 AC 219 ms 18720 KB
63 AC 220 ms 18660 KB
64 AC 290 ms 18736 KB
65 AC 81 ms 8100 KB
66 AC 131 ms 11684 KB
67 AC 82 ms 8348 KB
68 AC 34 ms 4648 KB
69 AC 27 ms 4132 KB
7 AC 25 ms 4004 KB
70 AC 31 ms 4448 KB
71 AC 26 ms 3996 KB
72 AC 28 ms 4000 KB
73 AC 28 ms 4068 KB
74 AC 29 ms 4264 KB
75 AC 32 ms 4516 KB
76 AC 39 ms 5032 KB
77 AC 34 ms 4520 KB
78 AC 36 ms 5024 KB
79 AC 28 ms 4260 KB
8 AC 26 ms 3884 KB
80 AC 29 ms 4136 KB
81 AC 37 ms 4904 KB
82 AC 34 ms 4652 KB
83 AC 33 ms 4524 KB
84 AC 42 ms 5412 KB
85 AC 40 ms 5280 KB
86 AC 33 ms 4520 KB
87 AC 35 ms 4776 KB
88 AC 36 ms 4652 KB
89 AC 47 ms 5384 KB
9 AC 28 ms 3996 KB