Submission #101873


Source Code Expand

#include <iostream>
#include <algorithm>

using namespace std;

const int MAX_N=1e5;
const int 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;
	
	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);
	}
	
	cout<<res<<endl;
}

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

Submission Info

Submission Time
Task A - Anime Master
User Running
Language C++ (G++ 4.6.4)
Score 100
Code Size 1126 Byte
Status AC
Exec Time 257 ms
Memory 18844 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 3992 KB
10 AC 26 ms 3960 KB
11 AC 27 ms 3936 KB
12 AC 26 ms 4004 KB
13 AC 27 ms 4004 KB
14 AC 27 ms 4004 KB
15 AC 26 ms 3996 KB
16 AC 27 ms 4000 KB
17 AC 26 ms 3960 KB
18 AC 26 ms 3956 KB
19 AC 27 ms 4004 KB
2 AC 27 ms 3876 KB
20 AC 34 ms 3956 KB
21 AC 26 ms 3868 KB
22 AC 25 ms 4000 KB
23 AC 26 ms 4000 KB
24 AC 25 ms 4000 KB
25 AC 25 ms 3996 KB
26 AC 26 ms 4012 KB
27 AC 26 ms 3996 KB
28 AC 26 ms 4004 KB
29 AC 26 ms 4004 KB
3 AC 26 ms 3932 KB
30 AC 27 ms 3876 KB
31 AC 27 ms 4004 KB
32 AC 27 ms 3884 KB
33 AC 27 ms 4004 KB
34 AC 26 ms 3996 KB
35 AC 27 ms 4060 KB
36 AC 25 ms 4128 KB
37 AC 25 ms 4000 KB
38 AC 25 ms 4132 KB
39 AC 27 ms 4012 KB
4 AC 26 ms 3960 KB
40 AC 25 ms 4120 KB
41 AC 26 ms 4008 KB
42 AC 27 ms 4000 KB
43 AC 26 ms 3996 KB
44 AC 27 ms 4000 KB
45 AC 26 ms 4008 KB
46 AC 25 ms 4000 KB
47 AC 26 ms 4000 KB
48 AC 27 ms 3880 KB
49 AC 26 ms 3880 KB
5 AC 26 ms 4008 KB
50 AC 26 ms 3928 KB
51 AC 27 ms 4128 KB
52 AC 26 ms 4008 KB
53 AC 26 ms 3884 KB
54 AC 25 ms 4012 KB
55 AC 24 ms 3996 KB
56 AC 26 ms 4004 KB
57 AC 26 ms 4004 KB
58 AC 216 ms 18732 KB
59 AC 210 ms 18716 KB
6 AC 25 ms 3872 KB
60 AC 194 ms 18728 KB
61 AC 216 ms 18724 KB
62 AC 218 ms 18844 KB
63 AC 220 ms 18680 KB
64 AC 257 ms 18736 KB
65 AC 80 ms 8104 KB
66 AC 133 ms 11684 KB
67 AC 84 ms 8368 KB
68 AC 34 ms 4708 KB
69 AC 27 ms 4132 KB
7 AC 26 ms 3872 KB
70 AC 32 ms 4388 KB
71 AC 26 ms 3992 KB
72 AC 26 ms 4124 KB
73 AC 26 ms 4000 KB
74 AC 29 ms 4384 KB
75 AC 33 ms 4648 KB
76 AC 39 ms 5032 KB
77 AC 34 ms 4516 KB
78 AC 38 ms 5032 KB
79 AC 29 ms 4256 KB
8 AC 26 ms 4004 KB
80 AC 28 ms 4132 KB
81 AC 35 ms 4904 KB
82 AC 35 ms 4652 KB
83 AC 32 ms 4596 KB
84 AC 43 ms 5400 KB
85 AC 42 ms 5312 KB
86 AC 33 ms 4520 KB
87 AC 34 ms 4764 KB
88 AC 34 ms 4652 KB
89 AC 43 ms 5412 KB
9 AC 26 ms 3872 KB