
рдореБрдЭреЗ рдЖрдкрдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ, рдкреНрд░рд┐рдп рдкрд╛рдардХ, рд▓реЗрдХрд┐рди рдореИрдВ рд╣рдореЗрд╢рд╛ рджреНрд╡рд┐рдЖрдзрд╛рд░реА рдЦреЛрдЬ рдкреЗрдбрд╝реЛрдВ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдореЗрдВ рд╕рдиреНрдирд┐рд╣рд┐рдд рдмреБрдирд┐рдпрд╛рджреА рд╡рд┐рдЪрд╛рд░ рдХреА рдХреГрдкрд╛ рдФрд░
рд╕рдВрддреБрд▓рд┐рдд рджреНрд╡рд┐рдЖрдзрд╛рд░реА рдЦреЛрдЬ рдкреЗрдбрд╝ (
рд▓рд╛рд▓-рдХрд╛рд▓реЗ рдкреЗрдбрд╝ ,
рдПрд╡реАрдПрд▓ рдкреЗрдбрд╝ ,
рдХрд╛рд░реНрдЯреЗрд╢рд┐рдпрди рдкреЗрдбрд╝ ) рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рдмреАрдЪ рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рдерд╛ред рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рд╕реЗрдбрд╡рд┐рдХреНрд╡рд┐рдХ [
1 ] рдХреЛ рдлрд┐рд░ рд╕реЗ рдЪрд╛рд▓реВ рдХрд░рддреЗ рд╣реБрдП, рдореБрдЭреЗ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЦреЛрдЬ рд╡рд╛рд▓реЗ рдкреЗрдбрд╝реЛрдВ (рдореВрд▓ рдХрд╛рдо [
2 ] рднреА рдорд┐рд▓рд╛) рдХрд╛ рд╡рд░реНрдгрди рдорд┐рд▓рд╛ - рдЗрддрдирд╛ рд╕рд░рд▓ рдХрд┐ рдпрд╣ рдкреГрд╖реНрда рдХреЗ рдХреЗрд╡рд▓ рдПрдХ рддрд┐рд╣рд╛рдИ рд╣рд┐рд╕реНрд╕реЗ рдкрд░ рд╕реНрдерд┐рдд рд╣реИ (рдиреЛрдбреНрд╕, рдПрдХ рдЕрдиреНрдп рдкреГрд╖реНрда - рдиреЛрдбреНрд╕ рд╣рдЯрд╛рдПрдВ)ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХрд░реАрдм рд╕реЗ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдкрд░, рдЦреЛрдЬ рдкреЗрдбрд╝ рд╕реЗ рдиреЛрдбреНрд╕ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕реБрдВрджрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдмреЛрдирд╕ рдХреА рдЦреЛрдЬ рдХреА рдЧрдИ рдереАред рдЕрдЧрд▓рд╛, рдЖрдкрдХреЛ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЦреЛрдЬ рд╡рд╛рд▓реЗ рдкреЗрдбрд╝реЛрдВ рдХрд╛ рдПрдХ рд╡рд░реНрдгрди (рд░рдВрдЧ рдЪрд┐рддреНрд░реЛрдВ рдХреЗ рд╕рд╛рде), рдПрдХ рд╕реА ++ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди, рд╕рд╛рде рд╣реА рд╡рд░реНрдгрд┐рдд рдкреЗрдбрд╝реЛрдВ рдХреЗ рд╕рдВрддреБрд▓рди рдХреЗ рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рд╕рдВрд▓реЗрдЦрди рдЕрдзреНрдпрдпрди рдХреЗ рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓реЗрдВрдЧреЗред
рдЪрд▓реЛ рдереЛрдбрд╝рд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ
рдЪреВрдВрдХрд┐ рдореИрдВ рдкреЗрдбрд╝ рдХреЗ рдкреВрд░реНрдг рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ, рдореБрдЭреЗ рд╢реБрд░реБрдЖрдд рд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ (рдкреЗрд╢реЗрд╡рд░ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдЬреЛрдбрд╝реЗ рдХреЛ рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ)ред рдмрд╛рдЗрдирд░реА рд╕рд░реНрдЪ рдЯреНрд░реА рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдиреЛрдб рдореЗрдВ рдореБрдЦреНрдп рдХреБрдВрдЬреА рд╣реЛрдЧреА, рдЬреЛ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рд╕рднреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддреА рд╣реИ (рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдпрд╣ рдкреВрд░реА рд╣реЛрдЧреА), рдФрд░ рдмрд╛рдПрдВ рдФрд░ рджрд╛рдПрдВ рдЙрдкрдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╛рдПрдВ рдФрд░ рджрд╛рдПрдВ рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХреА рдПрдХ рдЬреЛрдбрд╝реАред рдпрджрд┐ рдХреЛрдИ рд╕реВрдЪрдХ рд╢реВрдиреНрдп рд╣реИ, рддреЛ рд╕рдВрдмрдВрдзрд┐рдд рдкреЗрдбрд╝ рдЦрд╛рд▓реА рд╣реИ (рдпрд╛рдиреА, рдмрд╕ рдЕрдиреБрдкрд╕реНрдерд┐рдд)ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╡реГрдХреНрд╖ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдПрдХ рдФрд░ рдЖрдХрд╛рд░ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдЬреЛ рдЗрд╕ рдиреЛрдб рдореЗрдВ рдЬрдбрд╝ рдХреЗ рд╕рд╛рде рдкреЗрдбрд╝ рдХреЗ рдЖрдХрд╛рд░ (
рддреЛрддреЗ рдХреЗ рддреЛрддреЗ ) рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдЧрд╛ред рдиреЛрдбреНрд╕ рдХреЛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛:
struct node // { int key; int size; node* left; node* right; node(int k) { key = k; left = right = 0; size = 1; } };

рдЦреЛрдЬ рдЯреНрд░реА рдХреА рдореБрдЦреНрдп рд╕рдВрдкрддреНрддрд┐ рдпрд╣ рд╣реИ рдХрд┐ рдмрд╛рдИрдВ рд╕рдмрдЯреНрд░реА рдореЗрдВ рдХреЛрдИ рднреА рдХреБрдВрдЬреА рд░реВрдЯ рдХреА рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЫреЛрдЯреА рд╣реИ, рдФрд░ рд░рд╛рдЗрдЯ рд╕рдмрдЯреНрд░реА рдореЗрдВ рдпрд╣ рд░реВрдЯ рдХреА рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрдбрд╝рд╛ рд╣реИ (рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП, рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╕рднреА рдХреБрдВрдЬреА рдЕрд▓рдЧ рд╣реИрдВ)ред рдпрд╣ рдЧреБрдг (рджрд╛рдИрдВ рдУрд░ рдХреА рдЖрдХреГрддрд┐ рдореЗрдВ рдпреЛрдЬрдирд╛рдмрджреНрдз рд░реВрдк рд╕реЗ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ) рд╣рдореЗрдВ рд░реВрдЯ рдХреБрдВрдЬреА рдХреЗ рдореВрд▓реНрдп рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдХреБрдВрдЬреА рдХреА рдЦреЛрдЬ рдХреЛ рдмрд╣реБрдд рдЖрд╕рд╛рдиреА рд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЦреЛрдЬ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкреБрдирд░рд╛рд╡рд░реНрддреА рд╕рдВрд╕реНрдХрд░рдг (рдФрд░ рд╣рдо рдХреЗрд╡рд▓ рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ) рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
node* find(node* p, int k) // k p { if( !p ) return 0; // if( k == p->key ) return p; if( k < p->key ) return find(p->left,k); else return find(p->right,k); }
рд╣рдо рдкреЗрдбрд╝ рдореЗрдВ рдирдИ рдХреБрдВрдЬреА рдбрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред рдХреНрд▓рд╛рд╕рд┐рдХ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рдЗрдВрд╕рд░реНрдЯ рдЗрд╕ рдЕрдВрддрд░ рдХреЗ рд╕рд╛рде рдЦреЛрдЬ рдХреЛ рджреЛрд╣рд░рд╛рддрд╛ рд╣реИ рдХрд┐ рдЬрдм рд╣рдо рдЦрд╛рд▓реА рдкреЙрдЗрдВрдЯрд░ рдХреЗ рдЦрд┐рд▓рд╛рдл рдЖрд░рд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдПрдХ рдирдпрд╛ рдиреЛрдб рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдЙрд╕ рд╕реНрдерд╛рди рдкрд░ рдирд┐рд▓рдВрдмрд┐рдд рдХрд░ рджреЗрддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рд╣рдореЗрдВ рдПрдХ рдореГрдд рдЕрдВрдд рдорд┐рд▓рд╛ред рдкрд╣рд▓реЗ рддреЛ рдореИрдВ рдЗрд╕ рдлрдВрдХреНрд╢рди рдХреЛ рдкреЗрдВрдЯ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рд░реИрдВрдбрдорд╛рдЗрдЬреНрдб рдХреЗрд╕ рдореЗрдВ рдпрд╣ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдореЗрд░рд╛ рджрд┐рдорд╛рдЧ рдмрджрд▓ рдЧрдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдХреБрдЫ рдмрд┐рдВрджреБ рддрдп рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред
node* insert(node* p, int k) // k p { if( !p ) return new node(k); if( p->key>k ) p->left = insert(p->left,k); else p->right = insert(p->right,k); fixsize(p); return p; }
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдХреЛрдИ рднреА рдлрд╝рдВрдХреНрд╢рди рдЬреЛ рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдкреЗрдбрд╝ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдХреЛ рдирдИ рдЬрдбрд╝ рдореЗрдВ рд▓реМрдЯрд╛рддрд╛ рд╣реИ (рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдпрд╣ рдмрджрд▓ рдЧрдпрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ), рдФрд░ рдлрд┐рд░ рдХреЙрд▓рд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди рддрдп рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдкреЗрдбрд╝ рдХреЛ рдХрд╣рд╛рдВ рд▓рдЯрдХрд╛рдПрдВред рджреВрд╕рд░реА рдмрд╛рдд, рдХреНрдпреЛрдВрдХрд┐ рдпрджрд┐ рд╣рдореЗрдВ рдкреЗрдбрд╝ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЙрдкрдкреНрд░рдХрд╛рд░реЛрдВ рдореЗрдВ рдХрд┐рд╕реА рднреА рдмрджрд▓рд╛рд╡ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдкреЗрдбрд╝ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рд╕реНрд╡рдпрдВ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдХреБрдЫ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдпрд╣ рдХрд░реЗрдВрдЧреЗ:
int getsize(node* p) // size, (t=NULL) { if( !p ) return 0; return p->size; } void fixsize(node* p) // { p->size = getsize(p->left)+getsize(p->right)+1; }

рдЗрдВрд╕рд░реНрдЯ рдлрдВрдХреНрд╢рди рдореЗрдВ рдХреНрдпрд╛ рдЧрд▓рдд рд╣реИ? рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдкрд░рд┐рдгрд╛рдореА рдкреЗрдбрд╝ рдХреЗ рд╕рдВрддреБрд▓рди рдХреА рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рдЖрд░реЛрд╣реА рдХреНрд░рдо рдореЗрдВ рдЖрдкреВрд░реНрддрд┐ рдХреА рдЬрд╛рддреА рд╣реИ, рддреЛ рдкреЗрдбрд╝ рд╕рднреА рдЙрдкрд╕реНрдерд┐рдд "рдЧреБрдбреА" рдХреЗ рд╕рд╛рде рдПрдХ рдПрдХрд▓-рд▓рд┐рдВрдХ рдХреА рдЧрдИ рд╕реВрдЪреА (рдЖрдВрдХрдбрд╝рд╛ рджреЗрдЦреЗрдВ) рдореЗрдВ рдкрддрд┐рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдореБрдЦреНрдп рдПрдХ
рд░реИрдЦрд┐рдХ рд░рдирдЯрд╛рдЗрдо рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдкреЗрдбрд╝ рдкрд░
рд╕рднреА рдСрдкрд░реЗрд╢рди (рдЬрдмрдХрд┐ рд╕рдВрддреБрд▓рд┐рдд рдкреЗрдбрд╝реЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдмрд╛рд░ рд▓рдШреБрдЧрдгрдХ рд╣реИ)ред рдЕрд╕рдВрддреБрд▓рди рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЗ рд╣реИрдВред рдкрд░рдВрдкрд░рд╛рдЧрдд рд░реВрдк рд╕реЗ, рдЙрдиреНрд╣реЗрдВ рджреЛ рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рд╕рдВрддреБрд▓рди (рд▓рд╛рд▓-рдХрд╛рд▓реЗ рдкреЗрдбрд╝, рдПрд╡реАрдПрд▓ рдкреЗрдбрд╝) рдХреА рдЧрд╛рд░рдВрдЯреА рджреЗрддреЗ рд╣реИрдВ, рдФрд░ рдЬреЛ рдЗрд╕реЗ рдПрдХ рд╕рдВрднрд╛рд╡реНрдп рдЕрд░реНрде рдореЗрдВ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ (рдХрд╛рд░реНрдЯреЗрд╢рд┐рдпрди рдкреЗрдбрд╝) - рдПрдХ рдЕрд╕рдВрддреБрд▓рд┐рдд рдкреЗрдбрд╝ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдмрдбрд╝реЗ рдкреЗрдбрд╝ рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдирдЧрдгреНрдп рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЖрд╢реНрдЪрд░реНрдп рдХреА рдмрд╛рдд рдирд╣реАрдВ рд╣реЛрдЧреА рдпрджрд┐ рдореИрдВ рдХрд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдкреЗрдбрд╝ рджреВрд╕рд░реЗ рд╡рд░реНрдЧ рдХреЗ рд╣реИрдВред
рдкреЗрдбрд╝ рдХреА рдЬрдбрд╝ рдореЗрдВ рдбрд╛рд▓реЗрдВ
рд░реИрдВрдбрдорд╛рдЗрдЬреЗрд╢рди рдХрд╛ рдПрдХ рдЖрд╡рд╢реНрдпрдХ рдШрдЯрдХ рдПрдХ рдирдИ рдХреБрдВрдЬреА рдХреЗ рд╡рд┐рд╢реЗрд╖ рд╕рдореНрдорд┐рд▓рди рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдирдИ рдХреБрдВрдЬреА рдкреЗрдбрд╝ рдХреА рдЬрдбрд╝ рдореЗрдВ рд╣реИ (рдХрдИ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдПрдХ рдЙрдкрдпреЛрдЧреА рдХрд╛рд░реНрдп, рдХреНрдпреЛрдВрдХрд┐ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдбрд╛рд▓реА рдЧрдИ рдХреБрдВрдЬрд┐рдпреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдмрд╣реБрдд рддреЗрдЬрд╝ рд╣реИ,
рд╕реНрд╡рдпрдВ-рд╕реВрдЪрд┐рдпреЛрдВ рдХреЛ рдирдорд╕реНрддреЗ)ред рд╕рдореНрдорд┐рд▓рди рдХреЛ рдЬрдбрд╝ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдПрдХ рд░реЛрдЯреЗрд╢рди рдлрд╝рдВрдХреНрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ рд╕реНрдерд╛рдиреАрдп рдкреЗрдбрд╝ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рддрд╛ рд╣реИред

рдЙрдкрдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдФрд░ рдирдП рдкреЗрдбрд╝ рдХреА рдЬрдбрд╝ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордд рднреВрд▓рдирд╛:
node* rotateright(node* p) // p { node* q = p->left; if( !q ) return p; p->left = q->right; q->right = p; q->size = p->size; fixsize(p); return q; }
node* rotateleft(node* q) // q { node* p = q->right; if( !p ) return q; q->right = p->left; p->left = q; p->size = q->size; fixsize(q); return p; }
рдЕрдм рдореВрд▓ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдбрд╛рд▓реЗрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдирдИ рдХреБрдВрдЬреА рдХреЛ рдмрд╛рдИрдВ рдпрд╛ рджрд╛рдИрдВ рдЙрдкрдкреНрд░рдЬрд╛рддрд┐ (рд░реВрдЯ рдХреА рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЗ рдЖрдзрд╛рд░ рдкрд░) рдореЗрдВ рдбрд╛рд▓рддреЗ рд╣реИрдВ рдФрд░ рджрд╛рдПрдВ (рдмрд╛рдПрдВ) рд░реЛрдЯреЗрд╢рди рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЙрд╕ рдиреЛрдб рдХреЛ рдЙрдард╛рддрд╛ рд╣реИ рдЬреЛ рд╣рдореЗрдВ рдкреЗрдбрд╝ рдХреА рдЬрдбрд╝ рддрдХ рдЪрд╛рд╣рд┐рдПред

node* insertroot(node* p, int k) // k p { if( !p ) return new node(k); if( k<p->key ) { p->left = insertroot(p->left,k); return rotateright(p); } else { p->right = insertroot(p->right,k); return rotateleft(p); } }
рд░реИрдВрдбрдорд╛рдЗрдЬреНрдб рдЗрдВрд╕рд░реНрдЯ
рддреЛ рд╣рдо рдпрд╛рджреГрдЪреНрдЫрд┐рдХрд░рдг рдХреЗ рд▓рд┐рдП рдорд┐рд▓рд╛ред рдЗрд╕ рд╕рдордп, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рджреЛ рдЗрдВрд╕рд░реНрдЯ рдлрд╝рдВрдХреНрд╢рдВрд╕ рд╣реИрдВ - рд╕рд░рд▓ рдФрд░ рд░реВрдЯ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдЕрдм рд╣рдо рдПрдХ рд░реИрдВрдбрдорд╛рдЗрдЬреНрдб рдЗрдВрд╕рд░реНрдЯ рдЬреЛрдбрд╝ рд░рд╣реЗ рд╣реИрдВред рдЗрди рд╕рдмрдХрд╛ рдЕрд░реНрде рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рдЪрд╛рд░ рд╣реИред рдпрд╣ рдЬреНрдЮрд╛рдд рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк рд╕рднреА рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рдорд┐рд▓рд╛рддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдкреЗрдбрд╝ рдмрдирд╛рддреЗ рд╣реИрдВ (рдорд┐рд╢реНрд░рдг рдХреЗ рдмрд╛рдж рдкреНрд░рд╛рдкреНрдд рдХреНрд░рдо рдореЗрдВ рдорд╛рдирдХ рдпреЛрдЬрдирд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЪрд╛рдмрд┐рдпрд╛рдБ рдбрд╛рд▓реА рдЬрд╛рддреА рд╣реИрдВ), рдирд┐рд░реНрдорд┐рдд рдкреЗрдбрд╝ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдВрддреБрд▓рд┐рдд рд╣реЛрдЧрд╛ (рдЗрд╕рдХреА рдКрдВрдЪрд╛рдИ рд▓реЙрдЧ
2 рдХреЗ рдЦрд┐рд▓рд╛рдл 2log
2 рдХреЗ рдЖрджреЗрд╢ рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдВрддреБрд▓рд┐рдд рд╣реЛрдЧреА) рд▓рдХрдбрд╝реА)ред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд░реВрдЯ рд╕рдорд╛рди рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рд╕рд╛рде рд╕реНрд░реЛрдд рдХреБрдВрдЬреА рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреМрди рд╕реА рдЪрд╛рдмрд┐рдпрд╛рдВ рд╣реЛрдВрдЧреА (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡реЗ рдкреЗрдбрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддреА рд╣реИрдВ)? рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИред рдЪреВрдБрдХрд┐ рдХрд┐рд╕реА рднреА рдХреБрдВрдЬреА (рдЬрд┐рд╕рдореЗрдВ рд╣рдореЗрдВ рдЕрдм рдкреЗрдбрд╝ рдореЗрдВ рд╕рдореНрдорд┐рд▓рд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП) 1 (n + 1) рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдЬрдбрд╝ рд╣реЛ рд╕рдХрддреА рд╣реИ (n рд╕рдореНрдорд┐рд▓рди рд╕реЗ рдкрд╣рд▓реЗ рдкреЗрдбрд╝ рдХрд╛ рдЖрдХрд╛рд░ рд╣реИ), рдлрд┐рд░ рд╣рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рд╕рд╛рде рдЬрдбрд╝ рдореЗрдВ рд╕рдореНрдорд┐рд▓рди рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ 1-1 / рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рд╕рд╛рде (n + 1) - рд░реВрдЯ рдореЗрдВ рдХреБрдВрдЬреА рдорд╛рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рджрд╛рдПрдВ рдпрд╛ рдмрд╛рдПрдВ рдЙрдкрд╢реАрд░реНрд╖рдХ рдореЗрдВ рдкреБрдирд░рд╛рд╡рд░реНрддреА рд╕рдореНрдорд┐рд▓рди:
node* insert(node* p, int k) // k p { if( !p ) return new node(k); if( rand()%(p->size+1)==0 ) return insertroot(p,k); if( p->key>k ) p->left = insert(p->left,k); else p->right = insert(p->right,k); fixsize(p); return p; }
рдпрд╣ рдЯреНрд░рд┐рдХ рд╣реИ ... рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред 500 рдиреЛрдбреНрд╕ рдХреЗ рдкреЗрдбрд╝ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг (рдмрдврд╝рддреЗ рдХреНрд░рдо рдореЗрдВ 0 рд╕реЗ 499 рддрдХ рдХреА рдЪрд╛рдмрд┐рдпрд╛рдБ рдкреНрд░рд╛рдкреНрдд рдХреА рдЧрдИрдВ)

рдпрд╣ рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдХрд┐ рд╕реБрдВрджрд░рддрд╛ рдХрд╛ рдЖрджрд░реНрд╢, рд▓реЗрдХрд┐рди рдКрдВрдЪрд╛рдИ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЫреЛрдЯрд╛ рд╣реИред рд╣рдо рдХрд╛рд░реНрдп рдХреЛ рдЬрдЯрд┐рд▓ рдХрд░рддреЗ рд╣реИрдВ - рд╣рдо 0 рд╕реЗ 2
14 -1 (рдЖрджрд░реНрд╢ рдКрдВрдЪрд╛рдИ 14 рд╣реИ) рдХреА рдХреБрдВрдЬреА рдХреА рдЖрдкреВрд░реНрддрд┐ рдХрд░рдХреЗ рдПрдХ рдкреЗрдбрд╝ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреМрд░рд╛рди рдКрдВрдЪрд╛рдИ рдХреЛ рдорд╛рдкреЗрдВрдЧреЗред рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рд╣рдЬрд╛рд░ рд░рди рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдФрд╕рдд рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЧреНрд░рд╛рдл рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕ рдкрд░ рд╣рдорд╛рд░реЗ рдкрд░рд┐рдгрд╛рдо рдорд╛рд░реНрдХрд░реЛрдВ рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рд╣реИрдВ, рдФрд░ рдареЛрд╕ рд░реЗрдЦрд╛ [
3 ] - h = 4.3ln (n) -1.9ln (ln (n)) - 4 рд╕реЗ рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рдЕрдиреБрдорд╛рди рд╣реИред рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдЬреЛ рд╣рдо рдЖрдХреГрддрд┐ рд╕реЗ рджреЗрдЦрддреЗ рд╣реИрдВ рд╡рд╣ рд╣реИ рдХрд┐ рдкреНрд░рд╛рдпрд┐рдХрддрд╛ рд╕рд┐рджреНрдзрд╛рдВрдд рд╢рдХреНрддрд┐ рд╣реИ!

рдпрд╣ рд╕рдордЭрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдЧреНрд░рд╛рдл рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЧрдгрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдкреЗрдбрд╝ рдХреА рдКрдВрдЪрд╛рдИ рдХрд╛
рдФрд╕рдд рдореВрд▓реНрдп рджрд░реНрд╢рд╛рддрд╛ рд╣реИред рдФрд░ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЧрдгрдирд╛ рдореЗрдВ рдКрдБрдЪрд╛рдИ рдХрд┐рддрдиреА рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддреА рд╣реИред рдЙрдкрд░реЛрдХреНрдд рд▓реЗрдЦ рдореЗрдВ рдЗрд╕ рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рд╣реИред рд╣рдо рдХрд┐рд╕рд╛рди рдХрд╛ рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ рдФрд░ 4095 рдиреЛрдбреНрд╕ рдбрд╛рд▓рдиреЗ рдХреЗ рдмрд╛рдж рдКрдВрдЪрд╛рдЗрдпреЛрдВ рдХреЗ рд╡рд┐рддрд░рдг рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрдЯреЛрдЧреНрд░рд╛рдо рдмрдирд╛рдПрдВрдЧреЗред

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдХреЛрдИ рдЕрдкрд░рд╛рдз рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, рд╡рд┐рддрд░рдг рдкреВрдВрдЫ рдХрдо рд╣реЛрддреА рд╣реИрдВ - рдкреНрд░рд╛рдкреНрдд рдЕрдзрд┐рдХрддрдо рдКрдВрдЪрд╛рдИ 39 рд╣реИ, рдЬреЛ
рдЕрд╕реНрдкрддрд╛рд▓ рдХреЗ рдФрд╕рдд рд╕реЗ рдХрд╛рдлреА рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реИред
рдХреБрдВрдЬреА рдирд┐рдХрд╛рд▓рдирд╛
рддреЛ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рдВрддреБрд▓рд┐рдд (рдХрдо рд╕реЗ рдХрдо рдХреБрдЫ рдЕрд░реНрдереЛрдВ рдореЗрдВ) рдкреЗрдбрд╝ рд╣реИред рд╕рдЪ рд╣реИ, рдЬрдмрдХрд┐ рдпрд╣ рдиреЛрдбреНрд╕ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЕрдм рд╣рдо рдпрд╣реА рдХрд░реЗрдВрдЧреЗред рд╣рдЯрд╛рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк, рдЬреЛ рдХрдИ рдкрд╛рдареНрдпрдкреБрд╕реНрддрдХреЛрдВ рдореЗрдВ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реИ рдФрд░ рдЬреЛ рд╣рдм рдкрд░ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╡рд░реНрдгрд┐рдд (рдЪрд┐рддреНрд░реЛрдВ рдХреЗ рд╕рд╛рде) рд╣реИ, рдЬрд▓реНрджреА рд╕реЗ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╣реБрдд рд╣реА рдЕрдЯреНрд░реИрдХреНрдЯрд┐рд╡ рджрд┐рдЦрддрд╛ рд╣реИ (рдЗрдиреНрд╕рд░реНрдЯ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ)ред рд╣рдо рджреВрд╕рд░реЗ рддрд░реАрдХреЗ рд╕реЗ рдЬрд╛рдПрдВрдЧреЗ, рд▓рдЧрднрдЧ рдЬреИрд╕рд╛ рдХрд┐ рдЗрд╕ рдЕрджреНрднреБрдд
рдкреЛрд╕реНрдЯ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ (рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдпрд╣ рдХрд╛рд░реНрдЯреЗрд╢рд┐рдпрди рдкреЗрдбрд╝реЛрдВ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╡рд░реНрдгрди рд╣реИ)ред рдиреЛрдбреНрд╕ рд╣рдЯрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рд╕реАрдЦреЗрдВрдЧреЗ рдХрд┐ рдкреЗрдбрд╝реЛрдВ рдХреЛ рдХреИрд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПред рдЬрдбрд╝реЛрдВ рдкреА рдФрд░ рдХреНрдпреВ рдХреЗ рд╕рд╛рде рджреЛ рдЦреЛрдЬ рдкреЗрдбрд╝ рджрд┐рдП рдЬрд╛рдПрдВ, рдФрд░ рдкрд╣рд▓реЗ рдкреЗрдбрд╝ рдХреА рдХреЛрдИ рднреА рдХреБрдВрдЬреА рджреВрд╕рд░реЗ рдкреЗрдбрд╝ рдХреА рдХрд┐рд╕реА рднреА рдХреБрдВрдЬреА рд╕реЗ рдХрдо рдирд╣реАрдВ рд╣реИред рдЗрди рджреЛ рдкреЗрдбрд╝реЛрдВ рдХреЛ рдПрдХ рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдирдП рдкреЗрдбрд╝ рдХреА рдЬрдбрд╝ рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдк рджреЛрдиреЛрдВ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдХреЛ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕реЗ рдкреА рд╣реЛрдиреЗ рджреЗрдВред рдлрд┐рд░ рдкреА рдХреЗ рдмрд╛рдПрдВ рд╕рдмрдЯреНрд░реА рдХреЛ рд╡реИрд╕реЗ рд╣реА рдЫреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рджреЛ рдкреЗрдбрд╝реЛрдВ рдХреЗ рдорд┐рд▓рди, рдкреА рдХреЗ рд░рд╛рдЗрдЯ рд╕рдмрдЯреНрд░реА рдФрд░ рдкреВрд░реЗ рдЯреНрд░реА рдХреНрдпреВ рдХреЛ рдкреА рдХреЗ рджрд╛рдИрдВ рдУрд░ рдирд┐рд▓рдВрдмрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рд╡реЗ рд╕рдорд╕реНрдпрд╛ рдХреА рд╕рднреА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рддреЗ рд╣реИрдВ)ред

рджреВрд╕рд░реА рдУрд░, рдЙрд╕реА рд╕рдлрд▓рддрд╛ рдХреЗ рд╕рд╛рде, рд╣рдо рдиреЛрдб q рдХреЛ рдирдП рдкреЗрдбрд╝ рдХреА рдЬрдбрд╝ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ, рдЗрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рдмреАрдЪ рдХрд╛ рдЪреБрдирд╛рд╡ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд░реВрдк рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдмрд╛рдПрдВ рдкреЗрдбрд╝ рдХрд╛ рдЖрдХрд╛рд░ n рд╣реЛ, рдФрд░ рджрд╛рдпрд╛рдБ m рд╣реЛред рддрдм p рдХреЛ рдкреНрд░рд╛рдпрд┐рдХрддрд╛ n / (n + m), рдФрд░ q рдХреЛ рдкреНрд░рд╛рдпрд┐рдХрддрд╛ m / (n + m) рдХреЗ рд╕рд╛рде рдПрдХ рдирдИ рдЬрдбрд╝ рдХреЗ рд╕рд╛рде рдЪреБрдирд╛ рдЬрд╛рддрд╛ рд╣реИред
node* join(node* p, node* q) // { if( !p ) return q; if( !q ) return p; if( rand()%(p->size+q->size) < p->size ) { p->right = join(p->right,q); fixsize(p); return p; } else { q->left = join(p,q->left); fixsize(q); return q; } }

рдЕрдм рд╕рдм рдХреБрдЫ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИред рд╣рдо рдХреБрдВрдЬреА рджреНрд╡рд╛рд░рд╛ рд╣рдЯрд╛ рджреЗрдВрдЧреЗ - рд╣рдо рджрд┐рдП рдЧрдП рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдПрдХ рдиреЛрдб рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ (рдореИрдВ рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛рддрд╛ рд╣реВрдВ рдХрд┐ рд╕рднреА рдЪрд╛рдмрд┐рдпрд╛рдБ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЕрд▓рдЧ рд╣реИрдВ) рдФрд░ рдкреЗрдбрд╝ рд╕реЗ рдЗрд╕ рдиреЛрдб рдХреЛ рд╣рдЯрд╛ рджреЗрдВред рдЦреЛрдЬ рдЪрд░рдг рдЦреЛрдЬ рдХреЗ рджреМрд░рд╛рди (рд╡рд┐рд╖рдо рд░реВрдк рд╕реЗ рдкрд░реНрдпрд╛рдкреНрдд) рдХреЗ рд╕рдорд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рд╣рдо рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд░рддреЗ рд╣реИрдВ - рдкрд╛рдпрд╛ рдиреЛрдб рдХреЗ рдмрд╛рдПрдВ рдФрд░ рджрд╛рдПрдВ рдЙрдкрдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдорд┐рд▓рд╛рддреЗ рд╣реИрдВ, рдиреЛрдб рдХреЛ рд╣рдЯрд╛рддреЗ рд╣реИрдВ, рдФрд░ рд╡рд┐рд▓рдп рдХрд┐рдП рдЧрдП рдкреЗрдбрд╝ рдХреА рдЬрдбрд╝ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рддреЗ рд╣реИрдВред
node* remove(node* p, int k) // p k { if( !p ) return p; if( p->key==k ) { node* q = join(p->left,p->right); delete p; return q; } else if( k<p->key ) p->left = remove(p->left,k); else p->right = remove(p->right,k); return p; }
рдЬрд╛рдВрдЪ рд▓реЗрдВ рдХрд┐ рд╣рдЯрд╛рдиреЗ рд╕реЗ рдкреЗрдбрд╝ рдХрд╛ рд╕рдВрддреБрд▓рди рдмрд┐рдЧрдбрд╝рддрд╛ рдирд╣реАрдВ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, 2
15 рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдПрдХ рдкреЗрдбрд╝ рдмрдирд╛рдПрдВ, рдлрд┐рд░ рдЖрдзрд╛ рд╣рдЯрд╛ рджреЗрдВ (0 рд╕реЗ 2 рд╕реЗ
14 -1 рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕рд╛рде) рдФрд░ рдКрдВрдЪрд╛рдЗрдпреЛрдВ рдХреЗ рд╡рд┐рддрд░рдг рдХреЛ рджреЗрдЦреЗрдВ ...

рд╡рд╕реНрддреБрддрдГ рдХреЛрдИ рдЕрдВрддрд░ рдирд╣реАрдВ, рдЬреИрд╕рд╛ рдХрд┐ "рд╕рд╛рдмрд┐рдд" рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ ...
рдПрдХ рдирд┐рд╖реНрдХрд░реНрд╖ рдХреЗ рдмрдЬрд╛рдп
рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдмрд╛рдЗрдирд░реА рдЦреЛрдЬ рдкреЗрдбрд╝реЛрдВ рдХрд╛ рдирд┐рд╕реНрд╕рдВрджреЗрд╣ рд▓рд╛рдн рдЙрдирдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рд╕рд╛рджрдЧреА рдФрд░ рд╕реБрдВрджрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рдореБрдлреНрдд рдХреЗрдХ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИрдВред рд╣рдо рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреНрдпрд╛ рднреБрдЧрддрд╛рди рдХрд░рддреЗ рд╣реИрдВ? рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЕрддрд┐рд░рд┐рдХреНрдд рдЖрдХрд╛рд░ рдХреЗ рднрдВрдбрд╛рд░рдг рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдореЗрдореЛрд░реАред рдкреНрд░рддрд┐ рдиреЛрдб рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рдлрд╝реАрд▓реНрдбред рд▓рд╛рд▓-рдХрд╛рд▓реЗ рдкреЗрдбрд╝реЛрдВ рдореЗрдВ, рдХреБрдЫ рдХреМрд╢рд▓ рдХреЗ рд╕рд╛рде, рдЖрдк рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЕрддрд┐рд░рд┐рдХреНрдд рдХреНрд╖реЗрддреНрд░ рдХреЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рджреВрд╕рд░реА рдУрд░, рдкреЗрдбрд╝ рдХрд╛ рдЖрдХрд╛рд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмреЗрдХрд╛рд░ рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЖрдкрдХреЛ рд╕рдВрдЦреНрдпрд╛ (рдЪрдпрди рдХрд╛рд░реНрдп рдпрд╛ рдХреНрд░рдорд┐рдХ рдЖрдБрдХрдбрд╝реЛрдВ рдХреА рдЦреЛрдЬ) рджреНрд╡рд╛рд░рд╛ рдбреЗрдЯрд╛ рддрдХ рдкрд╣реБрдВрдЪ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬреЛ рд╣рдорд╛рд░реЗ рдкреЗрдбрд╝ рдХреЛ, рдХрд┐рд╕реА рднреА рддрддреНрд╡ рдХреЛ рдбрд╛рд▓рдиреЗ рдФрд░ рд╣рдЯрд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдХреНрд░рдордмрджреНрдз рд╕рд░рдгреА рдореЗрдВ рдмрджрд▓ рджреЗрддрд╛ рд╣реИред рджреВрд╕рд░реЗ, рдпрджреНрдпрдкрд┐ рд▓реЙрдЧрд░рд┐рджрдорд┐рдХ рд╕рдордп рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдЖрдиреБрдкрд╛рддрд┐рдХрддрд╛ рдирд┐рд░рдВрддрд░ рдмрдбрд╝реА рд╣реЛрдЧреА - рд▓рдЧрднрдЧ рд╕рднреА рдСрдкрд░реЗрд╢рди рджреЛ рдкрд╛рд╕ (рдКрдкрд░ рдФрд░ рдиреАрдЪреЗ) рдореЗрдВ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдирд╛ рдФрд░ рд╣рдЯрд╛рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЕрдЪреНрдЫреА рдЦрдмрд░ рд╣реИ - рд╕рдм рдХреБрдЫ рдЦреЛрдЬ рдЪрд░рдг рдореЗрдВ рдмрд╣реБрдд рдЬрд▓реНрджреА рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдВрдд рдореЗрдВ, рдЧрдВрднреАрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдРрд╕реЗ рдкреЗрдбрд╝реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмреБрдирд┐рдпрд╛рджреА рдмрд╛рдзрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд▓реЙрдЧрд░рд┐рджрдорд┐рдХ рд╕рдордп рдХреА рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рд╣реИ, рд╣рдореЗрд╢рд╛ рдПрдХ рдореМрдХрд╛ рд╣реИ рдХрд┐ рдкреЗрдбрд╝ рдЦрд░рд╛рдм рд░реВрдк рд╕реЗ рд╕рдВрддреБрд▓рд┐рдд рд╣реЛрдЧрд╛ред рд╕рдЪ рд╣реИ, рд╣рдЬрд╛рд░реЛрдВ рдиреЛрдбреНрд╕ рдХреЗ рд╕рд╛рде рднреА рдЗрд╕ рддрд░рд╣ рдХреА рдШрдЯрдирд╛ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдЗрддрдиреА рдЫреЛрдЯреА рд╣реИ рдХрд┐, рд╢рд╛рдпрдж, рдЖрдк рдПрдХ рдореМрдХрд╛ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ ...
рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!
рд╕рд╛рд╣рд┐рддреНрдп
- рд░реЙрдмрд░реНрдЯ рд╕реЗрдбрд╡рд┐рдХ, рд╕реА ++ рдПрд▓реНрдЧреЛрд░рд┐рджрдо, рдПрдо ред: рд╡рд┐рд▓рд┐рдпрдореНрд╕, 2011 - рд╕рд┐рд░реНрдл рдПрдХ рдЕрдЪреНрдЫреА рдХрд┐рддрд╛рдм
- рдорд╛рд░реНрдЯрд┐рдиреЗрдЬ, рдХреЙрдирд░реЛрдбреЛ; рд░реВрд░рд╛, рд╕рд▓реНрд╡рд╛рдбреЛрд░ (1998), рд░реИрдВрдбрдорд╛рдЗрдЬреНрдб рдмрд╛рдЗрдирд░реА рд╕рд░реНрдЪ рдЯреНрд░реА , рдЬрд░реНрдирд▓ рдСрдл рдПрд╕реАрдПрдо (ACM рдкреНрд░реЗрд╕) 45 (2): 288тАУ323 - рдореВрд▓ рд▓реЗрдЦ
- рд░реАрдб, рдмреНрд░реВрд╕ (2003), рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рджреНрд╡рд┐рдЖрдзрд╛рд░реА рдЦреЛрдЬ рдкреЗрдбрд╝ рдХреА рдКрдВрдЪрд╛рдИ , рдПрд╕реАрдПрдо 50 рдХреЗ рдЬрд░реНрдирд▓ (3): 306тАУ332 - рдкреЗрдбрд╝ рдХреА рдКрдВрдЪрд╛рдИ рдХрд╛ рдЕрдиреБрдорд╛рди