строка изображения
WA 4 раза дерево сегмент открытое пространство тайна
# include <бит / STDC ++ ч.> с использованием пространства имен STD; #define maxn 100005 структура НОД { INT х, у; BOOL F; /// ?记录左右端点 } N [ 200005 ]; структура дерева { INT д; INT ленивым; } T [maxn * 7 ]; вектор < INT > A; BOOL CMP (НОД а, б НОД) { если (ау == с) вернуть аф == 0 ; вернуться ау < по; } недействительныммагазинный ( INT х) { Т [х << 1 ] .d + = Т [х] .lazy; Т [х << 1 ] .lazy + = Т [х] .lazy; Т [х << 1 | 1 ] .d + = Т [х] .lazy; Т [х << 1 | 1 ] .lazy + = Т [х] .lazy; Т [х] .lazy = 0 ; } Недействительными Pushup ( INT х) { Т [х] .d = тах (Т [х << 1 ] .d, Т [х << 1 | 1 ] .d); } недействительнымобновление ( INT л, INT г, INT Л.Л., INT Р.Р., INT v, INT х) { если (л> = LL && г <= р - р) { Т [х] .d + = v; Т [х] .lazy + = v; вернуться ; } INT середины = (L + R) >> 1 ; магазинный (х); если (LL <= середина) { обновление (л, середина, LL, р - р, V, X << 1 ); } Если (р - р> середина) { обновление (середина + 1 , г, LL, р - р, V, X <<1 | 1 ); } Pushup (х); } INT п, к; INT основных () { зсапЕ ( " % d% d " , & п, & к); ИНТ х, у; для ( INT I = 0 ; <п; я ++ ) { зсапЕ ( " % d% d " , & х, & у); A.push_back (х); A.push_back (х + к); Н [г] = НОД {х, у, 1 }; Н [я + N] = Nod {х, у + к, 0 }; } // сортировки (А, А + п); сортировать (A.begin (), A.end ()); уникальный (A.begin (), A.end ()); сортировки (N, N + 2 * п, CMP); INT ANS = 0 ; для ( INT I = 0 ; г < 2 * п; я ++ ) { INT л = lower_bound (A.begin (), A.end (), N [I] .x) -A.begin () + 1 ; INT г = lower_bound (A.begin (), A.end (), N [I] .x + к) -A.begin () + 1 ; если (N [I] .f) { обновление ( 1 , длина, L, R, 1 , 1 ); } остальное { обновление ( 1 , длина, L, R, - 1 , 1 ); } лет = макс (года T [ 1 ] .D); // COUT << ENDL << лет; } COUT << лет << ' \ п ' ; }