рдХрд╛рд░реНрдЯреЗрд╢рд┐рдпрди рдЯреНрд░реА: рднрд╛рдЧ 3. рдЗрдореНрдкреНрд▓рд╛рдВрдЯ рдХреА рджреНрд╡рд╛рд░рд╛ рдХрд╛рд░реНрдЯрд┐рдЬрд┐рдпрди рдЯреНрд░реА

рд╕рд╛рдордЧреНрд░реА рдХреА рддрд╛рд▓рд┐рдХрд╛ (рд╡рд░реНрддрдорд╛рди рдореЗрдВ)



рднрд╛рдЧ 1. рд╡рд┐рд╡рд░рдг, рд╕рдВрдЪрд╛рд▓рди, рдЕрдиреБрдкреНрд░рдпреЛрдЧред

рднрд╛рдЧ 2. рдкреЗрдбрд╝ рдореЗрдВ рдореВрд▓реНрдпрд╡рд╛рди рдЬрд╛рдирдХрд╛рд░реА рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрдИ рдСрдкрд░реЗрд╢рдиред

рднрд╛рдЧ 3. рдирд┐рд╣рд┐рдд рдХреБрдВрдЬреА рджреНрд╡рд╛рд░рд╛ рдХрд╛рд░реНрдЯреЗрд╢рд┐рдпрди рдкреЗрдбрд╝ред

рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП ...



рдмрд╣реБрдд рдордЬрдмреВрдд рдЬрд╛рджреВ рдЯреЛрдирд╛



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



рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рд╕реЗ рдбреИрдорд╛рдорд╛рдЗрдб рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдпрд╛рдж рдХрд░реЗрдВред рдЗрд╕рдореЗрдВ рдХреБрдВрдЬреА x рд╣реЛрддрд╛ рд╣реИ , рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рд╡реНрдпреБрддреНрдкрдиреНрди рдПрдХ рдЦреЛрдЬ рдкреЗрдбрд╝ рд╣реИ, рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдХреБрдВрдЬреА y , рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рд╡реНрдпреБрддреНрдкрдиреНрди рдПрдХ рдЧреБрдЪреНрдЫрд╛ рд╣реИ, рдФрд░ рд╕рдВрднрд╡рддрдГ, рдХреБрдЫ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЬрд╛рдирдХрд╛рд░реА (рд▓рд╛рдЧрдд) рдХреЗ рд╕рд╛рде рднреА рд╣реИред рдЪрд▓реЛ рдЕрд╕рдВрднрд╡ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЪрд╛рдмреА рдПрдХреНрд╕ рдХреЗ рдмрд┐рдирд╛ рд╡реНрдпреБрддреНрдкрдиреНрди ... рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдпрд╣реА рд╣реИ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдкреЗрдбрд╝ рд╣реЛрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рдХреБрдВрдЬреА x рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЪрд╛рдмрд┐рдпрд╛рдБ y рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╣реИрдВред рддрджрдиреБрд╕рд╛рд░, рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ рдЖрдорддреМрд░ рдкрд░ рд╕рдордЭ рд╕реЗ рдмрд╛рд╣рд░ рд╣реИ :)



рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЗрд╕ рддрд░рд╣ рдХреА рд╕рдВрд░рдЪрдирд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░реНрдЯреЗрд╢рд┐рдпрди рдкреЗрдбрд╝ рдХреА рддрд░рд╣ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЪрд╛рдмрд┐рдпрд╛рдБ x рдЕрднреА рднреА рдХрд╣реАрдВ рдореМрдЬреВрдж рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЗрдВ рд╣рдореЗрдВ рд╕реВрдЪрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╡реЗ рд╢рдкрде рд▓реЗрддреЗ рд╣реИрдВ рдХрд┐ рдЙрдирдХреЗ рд▓рд┐рдП, рдЬреИрд╕рд╛ рдХрд┐ рдЕрдкреЗрдХреНрд╖рд┐рдд рдерд╛, рдмрд╛рдЗрдирд░реА рд╕рд░реНрдЪ рдЯреНрд░реА рдХреА рд╢рд░реНрдд рдкреВрд░реА рд╣реЛрддреА рд╣реИред рддрдм рд╣рдо рдХрд▓реНрдкрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпреЗ рдЕрдЬреНрдЮрд╛рдд X 0 рд╕реЗ N-1 рддрдХ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИрдВ рдФрд░ рдкреЗрдбрд╝ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЗрдирдХреА рд╡реНрдпрд╡рд╕реНрдерд╛ рдХрд░рддреЗ рд╣реИрдВ:







рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдкреЗрдбрд╝ рдореЗрдВ рдпрд╣ рдРрд╕рд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рдХреЛрдиреЗ рдореЗрдВ рдХреАрдЬрд╝ рдЪрд┐рдкрдХрд╛рдП рдирд╣реАрдВ рдЧрдП рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреЛрдиреЗ рдЦреБрдж рд╣реА рдЧрд┐рдиреЗ рдЬрд╛рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡реЗ рдкрд┐рдЫрд▓реЗ рднрд╛рдЧ рд╕реЗ рдкрд╣рд▓реЗ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдЗрди-рдСрд░реНрдбрд░ рдмрд╛рдпрдкрд╛рд╕ рдХреНрд░рдо рдореЗрдВ рдЧрд┐рдиреЗ рдЬрд╛рддреЗ рд╣реИрдВред рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЧрд┐рдиреЗ рдХреЛрдиреЗ рд╡рд╛рд▓реЗ рдПрдХ рдкреЗрдбрд╝ рдХреЛ рдПрдХ рд╕рд░рдгреА рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕реВрдЪрдХрд╛рдВрдХ рдПрдХ рд╣реА рдирд┐рд╣рд┐рдд рдХреБрдВрдЬреА рд╣реИ, рдФрд░ рд╕рд╛рдордЧреНрд░реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдЬрд╛рдирдХрд╛рд░реА рд╣реИ c



ред рдХреЗрд╡рд▓ рд╕рдВрддреБрд▓рди рдХреЗ рд▓рд┐рдП рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдпреЗ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдЖрдВрддрд░рд┐рдХ рд╡рд┐рд╡рд░рдг рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╣реЛрддреЗ рд╣реИрдВред рдПрдХреНрд╕ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рдЙрдиреНрд╣реЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред







рдкрд┐рдЫрд▓реЗ рднрд╛рдЧ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдпрд╣ рд╕рд░рдгреА рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХрд┐рд╕реА рднреА рдЧреБрдг рдХреЛ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░рддреА рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдЫрдВрдЯрд╛рдИред рдЖрдЦрд┐рд░рдХрд╛рд░, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЬрд╛рдирдХрд╛рд░реА рдкрд░ рдХреЛрдИ рд╕рдВрд░рдЪрдирд╛рддреНрдордХ рдкреНрд░рддрд┐рдмрдВрдз рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЗрд╕реЗ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕рдмрд╕реЗ рдКрдкрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред



рдореБрдЦреНрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧ



рдЕрдм рдпрд╣ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рд▓рд╛рдпрдХ рд╣реИ рдХрд┐ рдЖрдЦрд┐рд░ рдЗрд╕ рддрд░рд╣ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреНрдпрд╛ рдЖрдкрдиреЗ рдХрднреА рджреЛ рд╕рд░рдгрд┐рдпреЛрдВ рдХрд╛ рд╡рд┐рд▓рдп рдХрд░рдирд╛ рдЪрд╛рд╣рд╛ рд╣реИ? рдпрд╣реА рд╣реИ, рдмрд╕ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рджреВрд╕рд░реЗ рдХреЗ рдЕрдВрдд рддрдХ рд▓рд┐рдЦреЗрдВ, рдПрдХ рд▓реВрдк рдореЗрдВ рдУ (рдПрди) рдореЗрдВ рджреВрд╕рд░реЗ рдПрдХ рдХреЗ рд╕рднреА рддрддреНрд╡реЛрдВ рдХреЛ рдХреЙрдкреА рдХрд░рдиреЗ рдХреЗ рдмрд┐рдирд╛ред рдирд┐рд╣рд┐рдд рдХреБрдВрдЬреА рджреНрд╡рд╛рд░рд╛ рдХрд╛рд░реНрдЯреЗрд╢рд┐рдпрди рдкреЗрдбрд╝ рдХреЗ рд╕рд╛рде, рдЖрдкрдХреЗ рдкрд╛рд╕ рдРрд╕рд╛ рдЕрд╡рд╕рд░ рд╣реИ: рдЖрдЦрд┐рд░рдХрд╛рд░, рдХрд┐рд╕реА рдиреЗ рднреА рд╣рдорд╕реЗ рдорд░реНрдЬ рдСрдкрд░реЗрд╢рди рдХреЛ рдирд╣реАрдВ рдЫреАрди рд▓рд┐рдпрд╛ред



рд╕реНрдЯреЙрдк-рд╕реНрдЯреЙрдк-рд╕реНрдЯреЙрдк, рд▓реЗрдХрд┐рди рдорд░реНрдЬ рдПрдХ рд╕реНрдкрд╖реНрдЯ рдХрд╛рд░реНрдЯреЗрд╢рд┐рдпрди рдкреЗрдбрд╝ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ред рддреЛ рдЙрд╕рдХреЗ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдпрд╣рд╛рдБ рдлрд┐рд░ рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рд╣реЛрдЧрд╛? рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВред рдЙрд╕рдХреЗ рдХреЛрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рджреЗрдЦреЗрдВред

 public static Treap Merge(Treap L, Treap R) { if (L == null) return R; if (R == null) return L; if (Ly > Ry) { var newR = Merge(L.Right, R); return new Treap(Lx, Ly, L.Left, newR); } else { var newL = Merge(L, R.Left); return new Treap(Rx, Ry, newL, R.Right); } }
      
      





рдорд░реНрдЬ рдСрдкрд░реЗрд╢рди, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕ рддрдереНрдп рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдмрд╛рдПрдВ рдЗрдирдкреБрдЯ рдЯреНрд░реА рдПрд▓ рдХреА рд╕рднреА рдЪрд╛рдмрд┐рдпрд╛рдБ рд╕рд╣реА рдЗрдирдкреБрдЯ рдЯреНрд░реА рдЖрд░ рдХреА рдХреБрдВрдЬреА рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реИрдВ ред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреА рдзрд╛рд░рдгрд╛ рдХреЗ рддрд╣рдд, рдпрд╣ рд╡рд┐рд▓рдп рдХрд░рддрд╛ рд╣реИ, рд╕рд┐рджреНрдзрд╛рдВрдд рдореЗрдВ рдХреБрдВрдЬрд┐рдпреЛрдВ рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рджреЗ рд░рд╣рд╛ рд╣реИ: рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдХреЗрд╡рд▓ рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдУрдВ рдХреА рддреБрд▓рдирд╛ рдХреА рдЬрд╛рддреА рд╣реИред



рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдЖрдк рдФрд░ рдореИрдВ рдпрд╣рд╛рдВ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЕрднрд┐рдорд╛рдиреА рддрд░реАрдХреЗ рд╕реЗ рдорд░реНрдЬ рдСрдкрд░реЗрд╢рди рдХреЛ рдзреЛрдЦрд╛ рджреЗ рд░рд╣реЗ рд╣реИрдВ: рд╡рд╣ рдЙрдореНрдореАрдж рдХрд░рддреА рд╣реИ рдХрд┐ рдЙрд╕реЗ рдЖрджреЗрд╢рд┐рдд рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдкреЗрдбрд╝ рджрд┐рдП рдЬрд╛рдПрдВрдЧреЗ, рдФрд░ рд╣рдо рдмрд┐рдирд╛ рдЪрд╛рдмреА рдХреЗ рдкреЗрдбрд╝реЛрдВ рдХреЛ рддрд╛рдбрд╝ рджреЗрдВрдЧреЗ :) рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдзрд╛рд░рдгрд╛ рдХрд┐ рдкреЗрдбрд╝реЛрдВ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рдЪрд╛рдмрд┐рдпрд╛рдБ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЖрджреЗрд╢ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдкреЗрдбрд╝реЛрдВ рдХреЛ рдорд░реНрдЬ рдХрд░реЗрдВ рддрд╛рдХрд┐ рдЪрд╛рдмрд┐рдпрд╛рдБ L рдХреБрдЫ рдЕрд░реНрдереЛрдВ рдореЗрдВ рдкреЗрдбрд╝ рдХреА рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдЖрд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдкрд╣рд▓реЗ рджрд┐рдЦрд╛рдИ рджреЗрдВ - рдХреНрдпреЛрдВрдХрд┐ рдЦреЛрдЬ рдкреЗрдбрд╝ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рдВрддреБрд╖реНрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╡рд╣ рдпрд╣ рд╣реИ: рдпрджрд┐ рд╡реГрдХреНрд╖ L рдореЗрдВ N рддрддреНрд╡ рдереЗ, рдФрд░ рд╡реГрдХреНрд╖ R рдореЗрдВ, рдХреНрд░рдорд╢рдГ M рддрддреНрд╡, рддреЛ рд╡реГрдХреНрд╖ рдХреЗ рддрддреНрд╡реЛрдВ рдХреЗ рд╡рд┐рд▓рдп рдХреЗ рдмрд╛рдж R рд╕реНрд╡рддрдГ N рд╕реЗ N + M-1 рдореЗрдВ рдирд┐рд╣рд┐рдд рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд▓реЗрдЧрд╛ред рдкреЗрдбрд╝ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдорд░реНрдЬ рдСрдкрд░реЗрд╢рди рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЙрдиреНрд╣реЗрдВ рдЙрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╡рд┐рддрд░рд┐рдд рдХрд░реЗрдЧрд╛, рдФрд░ рдЬрд┐рди рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдУрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддрд╛ рд╣реИ рд╡реЗ "рдЕрд░реНрдз-рд╕рдВрддреБрд▓рди" рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд░реЗрдВрдЧреЗред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдордиреЗ "рд╕рд░рдгреА" L рдХреЗ рджрд╛рдИрдВ рдУрд░ "рд╕рд░рдгреА" R рдХреЛ "рдЬрд┐рдореНрдореЗрджрд╛рд░ рдард╣рд░рд╛рдпрд╛"ред



рд╕реВрддреНрд░реЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╣рдореЗрдВ рдХреЗрд╡рд▓ x



рдХреБрдВрдЬреА рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдирдпрд╛ ImplicitTreap



рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рдВрдмрдВрдзрд┐рдд рдирд┐рдЬреА рдирд┐рд░реНрдорд╛рддрд╛ рд╣реИред рд╕рднреА рдорд░реНрдЬ рдХреЛрдб рд╕рдорд╛рди рд░рд╣реЗрдВрдЧреЗред рдмреЗрд╢рдХ, рдпрд╣ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЖрдк рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣рд╛рдВ рдХрдИ рдкреНрд░рд╢реНрдиреЛрдВ рдХреА рдЧрдгрдирд╛ рдХреЗ рдмрд┐рдирд╛ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ - рджреВрд╕рд░реЗ рднрд╛рдЧ рдореЗрдВ рд▓рд╛рдЧреВ "рдиреНрдпрд╛рдп рдмрд╣рд╛рд▓ рдХрд░рдиреЗ" рдФрд░ "рд╡рд╛рджреЗ рдХреЛ рдзрдХреНрдХрд╛" рдХреЗ рдХрд╛рд░реНрдп рднреА рдЕрдкрдиреЗ рдкреБрд░рд╛рдиреЗ рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рдорд░реНрдЬ рдореЗрдВ рд░рд╣реЗрдВрдЧреЗред



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



рдХрд╛ рдЕрдиреБрдХреНрд░рдо рд╣рдореЗрд╢рд╛ рд╕рдВрд░рдХреНрд╖рд┐рдд рд╣реЛрддрд╛ рд╣реИред

рдСрд░реЗрдВрдЬ рддреАрд░ рдорд░реНрдЬ рдореЗрдВ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдкрде рд╣реИред









рдЕрдм рдмрдВрдЯрд╡рд╛рд░реЗ рдХрд╛ рд╕рдордп рд╣реИред рдЙрд╕реЗ рдзреЛрдЦрд╛ рджреЗрдирд╛ рдЗрддрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ: рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рд╕реНрдкреНрд▓рд┐рдЯ рдСрдкрд░реЗрд╢рди, рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдУрдВ рдореЗрдВ рдХреЛрдИ рджрд┐рд▓рдЪрд╕реНрдкреА рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдХреЗрд╡рд▓ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рддрд╛ рд╣реИред рдЖрдкрдХреЛ рдпрд╣ рд╕реЛрдЪрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рд╡рд╣ рдирд┐рд╣рд┐рдд рд╡реГрдХреНрд╖ рдХреА рдЪреЛрдЯрд┐рдпреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХреИрд╕реЗ рдХрд░реЗрдЧрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕рдорд╕реНрдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдзрд┐рдХ рд╣реИ: рд╕реНрдкреНрд▓рд┐рдЯ рдСрдкрд░реЗрд╢рди рдирдП рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ? рд╡рд╣ рдПрдХ рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдПрдХ рдкреЗрдбрд╝ рдХрд╛рдЯрддреА рдереА, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЪрд╛рдмреА рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдХрдЯреМрддреА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред



рдХреЛрдИ рдХреБрдВрдЬреА рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рд╣реИ - рд╕рд░рдгреА рд╕реВрдЪрдХрд╛рдВрдХред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдХрд╛рдЯрдиреЗ рдХрд╛ рд╕рд╛рд░ рдХреБрдЫ рд╣рдж рддрдХ рдмрджрд▓ рдЧрдпрд╛ рд╣реИ: рд╣рдо рдкреЗрдбрд╝ рдХреЛ рджреЛ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ x 0 рддрддреНрд╡ рдмрд╛рдИрдВ рдУрд░ рджрд┐рдЦрд╛рдИ рджреЗрдВ, рдФрд░ рд╕рднреА рдЕрдиреНрдп рд╕рд╣реА рдореЗрдВред "рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░" рд╡реНрдпрд╛рдЦреНрдпрд╛ рдореЗрдВ, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╕рд░рдгреА x 0 рддрддреНрд╡реЛрдВ рдХреЛ рд╢реБрд░реБрдЖрдд рд╕реЗ рдПрдХ рдирдП рд╕рд░рдгреА рдореЗрдВ рдЕрд▓рдЧ рдХрд░рдирд╛ред



рдирдпрд╛ рд╕реНрдкреНрд▓рд┐рдЯ рдСрдкрд░реЗрд╢рди рдХреИрд╕реЗ рдХрд░реЗрдВ? рд╡рд╣ рдорд╛рдирддреА рд╣реИ, рдкрд╣рд▓реЗ рдХреА рддрд░рд╣, рджреЛ рдорд╛рдорд▓реЗ: рд░реВрдЯ T рдмрд╛рдПрдВ рдкрд░рд┐рдгрд╛рдо L рдпрд╛ рджрд╛рдПрдВ R рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ ред рдпрд╣ рдмрд╛рдИрдВ рдУрд░ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ рдпрджрд┐ рд╕рд░рдгреА рдореЗрдВ рдЗрд╕рдХрд╛ рд╕реВрдЪрдХрд╛рдВрдХ x 0 рд╕реЗ рдХрдо рд╣реИ, рдЕрдиреНрдпрдерд╛ рд╕рд╣реА рдореЗрдВред рдФрд░ рд╕рд░рдгреА рдореЗрдВ рдкреЗрдбрд╝ рдХреЗ рд╢реАрд░реНрд╖ рдХрд╛ рд╕реВрдЪрдХрд╛рдВрдХ рдХреНрдпрд╛ рд╣реИ? рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рджреВрд╕рд░реЗ рднрд╛рдЧ рд╕реЗ рдЙрд╕рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рд╣реИ: рдпрд╣ рдкреЗрдбрд╝ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдЙрдкрдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдлрд┐рд░ рдЪрдпрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЖрд╕рд╛рдиреА рд╕реЗ рдмрд╣рд╛рд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИред



S L рдХреЛ рдмрд╛рдПрдВ рд╕рдмрдЯреНрд░реА рдХрд╛ рдЖрдХрд╛рд░ рджреЗрдВ ( T.Left.Size



)ред

рдпрджрд┐ рдПрд╕ рдПрд▓ +1 0 x 0 рд╣реИ , рддреЛ рд░реВрдЯ рдмрд╛рдПрдВ рдкрд░рд┐рдгрд╛рдо рдореЗрдВ рд╣реЛрдЧрд╛ред рддреЛ, рдЖрдкрдХреЛ рдкреБрди: рд╕рд╣реА рд╕рдмрдЯреНрд░реА рдХрд╛рдЯрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди x 0 -S L -1 рджреНрд╡рд╛рд░рд╛ рдПрдХ рдЕрдиреНрдп рдХреБрдВрдЬреА рджреНрд╡рд╛рд░рд╛ рдХрдЯ, рдХреНрдпреЛрдВрдХрд┐ S L +1 рддрддреНрд╡ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд╛рдВрдЫрд┐рдд рд╡рд╛рдо рдкрд░рд┐рдгрд╛рдо рдореЗрдВ рдЧрд┐рд░ рдЧрдпрд╛ рд╣реИред

рдпрджрд┐ S L +1> x 0 рд╣реИ , рддреЛ рдореВрд▓ рд╕рд╣реА рдкрд░рд┐рдгрд╛рдо рдореЗрдВ рд╣реЛрдЧрд╛ред рдЕрдм рдЖрдкрдХреЛ рдмрд╛рдПрдВ рд╕рдмрдЯреНрд░реА рдХреЛ рдкреБрди: рдХрд╛рдЯрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рдорд╛рдорд▓рд╛ рдХрд╛рдлреА рд╕рдордорд┐рдд рдирд╣реАрдВ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдерд╛: рд╣рдордиреЗ рд╕рдмрд░реА рдХреЛ рдПрдХ рд╣реА рдХреБрдВрдЬреА x 0 рдХреЗ рд╕рд╛рде рдХрд╛рдЯ рджрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рдХрджрдо рдкрд░, рдкреБрдирд░рд╛рд╡рд░реНрддреА рддрддреНрд╡реЛрдВ рдХреЛ рд╕рд╣реА рдкрд░рд┐рдгрд╛рдо рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдмрд╛рдПрдВ рдХреЛ рдирд╣реАрдВред



рдЪрд┐рддреНрд░ рдПрдХреНрд╕ 0 = 6 рдореЗрдВ рдЪрд┐рдкрдХрд╛рдП рдЧрдП рдЙрдкрдкреНрд░рдХрд╛рд░реЛрдВ рдФрд░ рд╡рд┐рднрд╛рдЬрди рдХреЗ рд╕рд╛рде рдПрдХ рдХрд╛рд░реНрдЯреЗрд╢рд┐рдпрди рд╡реГрдХреНрд╖ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред







рдирдИ рд╕реНрдкреНрд▓рд┐рдЯ рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдХреЛрдб, рдПрдХ рдирдИ рдХреНрд▓рд╛рд╕ рд╡рд░реНрдХрдкреАрд╕ рдХреЗ рд╕рд╛рде, рдХреБрдВрдЬреА рд░рд╣рд┐рдд рдФрд░ рдПрдХ рдЕрдиреНрдп рдирд┐рдЬреА рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЗ рд╕рд╛рде рд╣реИред

рдореИрдВ рдХрдИ рдСрдкрд░реЗрд╢рдиреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдЕрдм рддрдХ рд╕реНрдкреНрд▓рд┐рдЯ рдлрд┐рд░ рд╕реЗ рджреЗрддрд╛ рд╣реВрдВ - рдкрд╛рдардХ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдЗрди рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд╡реЗ рдЕрдкрдиреЗ рдкреБрд░рд╛рдиреЗ рд╕реНрдерд╛рдиреЛрдВ рд╕реЗ рдЧрд╛рдпрдм рдирд╣реАрдВ рд╣реБрдП рд╣реИрдВред рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдЙрдкрдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдпрд╛рдж рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рднреВрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред

 private int y; public double Cost; public ImplicitTreap Left; public ImplicitTreap Right; public int Size = 1; private ImplicitTreap(int y, double cost, ImplicitTreap left = null, ImplicitTreap right = null) { this.y = y; this.Cost = cost; this.Left = left; this.Right = right; } public static int SizeOf(ImplicitTreap treap) { return treap == null ? 0 : treap.Size; } public void Recalc() { Size = SizeOf(Left) + SizeOf(Right) + 1; } //    -  Split public void Split(int x, out ImplicitTreap L, out ImplicitTreap R) { ImplicitTreap newTree = null; int curIndex = SizeOf(Left) + 1; if (curIndex <= x) { if (Right == null) R = null; else Right.Split(x - curIndex, out newTree, out R); L = new ImplicitTreap(y, Cost, Left, newTree); L.Recalc(); } else { if (Left == null) L = null; else Left.Split(x, out L, out newTree); R = new ImplicitTreap(y, Cost, newTree, Right); R.Recalc(); } }
      
      





рдЕрдм рдЬрдм рд╣рдордиреЗ рдРрд░рд░ рд╕реНрдкреНрд▓рд┐рдЯ рдФрд░ рдорд░реНрдЬ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрд╛ рд╣реИ, рдЬреЛ рд▓реЙрдЧрд░рд┐рджрдорд┐рдХ рд╕рдордп рдореЗрдВ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ рд╕рдордп рд╣реИ рдХрд┐ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдЪрд▓реЛ рд╕рд░рдгреА рдХреЗ рд╕рд╛рде рдЪрд╛рд░реЛрдВ рдУрд░ рдЦреЗрд▓рддреЗ рд╣реИрдВред



рдПрдХ рд╕рд░рдгреА рдХреЗ рд╕рд╛рде рдЦреЗрд▓



рдбрд╛рд▓рдиреЗ


рдлрд╝реЛрдХрд╕ рдирдВрдмрд░ 1 - рд╣рдо рдУ (рд▓реЙрдЧ 2 рдПрди) рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╕рд░рдгреА рдХреЗ рдЕрдВрджрд░ рдПрдХ рддрддреНрд╡ рдбрд╛рд▓реЗрдВ, рдФрд░ рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ рдУ (рдПрди) рдХреЗ рд▓рд┐рдП рдирд╣реАрдВред



рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╕рд╛рдзрд╛рд░рдг рдХрд╛рд░реНрдЯреЗрд╢рд┐рдпрди рдкреЗрдбрд╝реЛрдВ рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рдХреИрд╕реЗ рдХрд░реЗрдВ, рдХреЗрд╡рд▓ рдЕрдм рд╕реВрдЪрдХрд╛рдВрдХ рдиреЗ рдХреБрдВрдЬреА рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рд╣реИред рдФрд░ рдмрд╛рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ рдмрджрд▓реА рд╣реИред



тАв рд╣рдордиреЗ рд╕рд░рдгреА T [0 рдХреЛ рдХрд╛рдЯ рджрд┐рдпрд╛ ; рдПрди) рд╕рд░рдгрд┐рдпреЛрдВ рдкрд░ рд╕реВрдЪрдХрд╛рдВрдХ рд╕реНрдерд┐рддрд┐ рджреНрд╡рд╛рд░рд╛ рдПрд▓ [0; рдкреЛрд╕) рдФрд░ рдЖрд░ [рдкреЙрдЬрд╝; рдПрди) ред

тАв рд╣рдо рд╕рдореНрдорд┐рд▓рд┐рдд рддрддреНрд╡ рд╕реЗ рдПрдХ рд╢реАрд░реНрд╖ рд╕реЗ рдПрдХ рд╕рд░рдгреА-рдЯреНрд░реА рдмрдирд╛рддреЗ рд╣реИрдВред

тАв рдмрдирд╛рдП рдЧрдП рд╕рд░рдгреА рдХреЛ рджрд╛рдПрдВ рд╕реЗ рдмрд╛рдПрдВ рдкрд░рд┐рдгрд╛рдо L рдкрд░ рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВ, рдФрд░ рдЙрди рджреЛрдиреЛрдВ рдХреЛ рд╕рд╣реА рдкрд░рд┐рдгрд╛рдо Rред

тАв T '[0 рдХреА рдПрдХ рд╕рд░рдгреА рдорд┐рд▓рд╛ ; рдПрди + 1) , рдЬрд┐рд╕рдореЗрдВ рд╡рд╛рдВрдЫрд┐рдд рддрддреНрд╡ рд╕реНрдерд┐рддрд┐ рд╕реНрдерд┐рддрд┐ рдкрд░ рд╣реИ, рдФрд░ рд╢реЗрд╖ рджрд╛рд╣рд┐рдиреЗ рд╣рд╛рде рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред



рдбрд╛рд▓рдиреЗ рдХрд╛ рд╕реНрд░реЛрдд рдХреЛрдб рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд╣реАрдВ рдмрджрд▓рд╛ рд╣реИред

 public ImplicitTreap Add(int pos, double elemCost) { ImplicitTreap l, r; Split(pos, out l, out r); ImplicitTreap m = new ImplicitTreap(rand.Next(), elemCost); return Merge(Merge(l, m), r); }
      
      







рдирд┐рд╖реНрдХрд╛рд╕рди


рдлреЛрдХрд╕ рдирдВрдмрд░ 2 - рд╣рдордиреЗ рдЙрд╕ рд╕реНрдерд┐рддрд┐ рд╕реЗ рдПрдХ рддрддреНрд╡ рдХреЛ рдХрд╛рдЯ рджрд┐рдпрд╛ рдЬреЛ рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реИ ред



рдлрд┐рд░, рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░реНрдЯреЗрд╢рд┐рдпрди рдкреЗрдбрд╝реЛрдВ рдХреЗ рд╕рдорд╛рди рд╣реИред



тАв рд╣рдордиреЗ рд╕рд░рдгреА T [0 рдХреЛ рдХрд╛рдЯ рджрд┐рдпрд╛ ; рдПрди) рд╕рд░рдгрд┐рдпреЛрдВ рдкрд░ рд╕реВрдЪрдХрд╛рдВрдХ рд╕реНрдерд┐рддрд┐ рджреНрд╡рд╛рд░рд╛ рдПрд▓ [0; рдкреЛрд╕) рдФрд░ рдЖрд░ [рдкреЙрдЬрд╝; рдПрди) ред

тАв рд╕рд╣реА рдкрд░рд┐рдгрд╛рдо R рдХреЛ рдЗрдВрдбреЗрдХреНрд╕ 1 (рдпреВрдирд┐рдЯ!) рджреНрд╡рд╛рд░рд╛ рдХрд╛рдЯрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдореЗрдВ рд╕рд░рдгреА M [Pos; рдПрдХ рддрддреНрд╡ рд╕реЗ Pos + 1) (Pos рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рдЦрдбрд╝рд╛ рд╣реИ), рдФрд░ рд╕рд░рдгреА R '[Pos + 1; рдПрди) ред

тАв рдорд░реНрдЬ рд╕рд░рдг рдПрд▓ рдФрд░ рдЖрд░ 'ред



рд╕реНрд░реЛрдд рдХреЛрдб рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ:

 public ImplicitTreap Remove(int pos) { ImplicitTreap l, m, r; Split(pos, out l, out r); r.Split(1, out m, out r); return Merge(l, r); }
      
      







рдкреНрд░рддрд┐ рдЦрдВрдб рдореЗрдВ рдХрдИ рдЕрдиреБрд░реЛрдз


рдлреЛрдХрд╕ рдирдВрдмрд░ 3: рдУ (рд▓реЙрдЧ 2 рдПрди) рдХреЗ рд▓рд┐рдП, рдЖрдк рд╕рд░рдгреА рдЙрдк-рд╕реЗрдЧрдореЗрдВрдЯ (рд╕рдо / рдЕрдзрд┐рдХрддрдо / рдиреНрдпреВрдирддрдо / рдЙрдкрд╕реНрдерд┐рддрд┐ рдпрд╛ рд▓реЗрдмрд▓ рдХреА рд╕рдВрдЦреНрдпрд╛, рдЖрджрд┐) рдкрд░ рд╕рднреА рдПрдХ рд╣реА рдХрдИ рдкреНрд░рд╢реНрди рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред



рдкреЗрдбрд╝ рдХреА рд╕рдВрд░рдЪрдирд╛ рдкрд┐рдЫрд▓реЗ рд╣рд┐рд╕реНрд╕реЗ рд╕реЗ рдирд╣реАрдВ рдмрджрд▓рддреА рд╣реИ: рд╢реАрд░реНрд╖ рдкрд░, рд╣рдо рдкреВрд░реЗ рд╕рдмрд╕рд┐рд▓реЗрд╢рди рдХреЗ рд▓рд┐рдП рдЧрдгрдирд╛ рдХрд┐рдП рдЧрдП рд╡рд╛рдВрдЫрд┐рдд рдореВрд▓реНрдп рдХреЗ рдЕрдиреБрд░реВрдк рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреЗ рд╣реИрдВред рдорд░реНрдЬ рдФрд░ рд╕реНрдкреНрд▓рд┐рдЯ рдХреЗ рдЕрдВрдд рдореЗрдВ, рдЙрд╕реА Recalc()



рдХреЙрд▓ рдХреЛ Recalc()



, рдЬреЛ рдЙрд╕рдХреЗ рд╡рдВрд╢рдЬреЛрдВ рдореЗрдВ рдЧрдгрдирд╛ рдХрд┐рдП рдЧрдП рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╢реАрд░реНрд╖ рдкрд░ рдореВрд▓реНрдп рдХреЗ рдореВрд▓реНрдп рдХреЛ рдкреБрдирд░реНрдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИред



рдЦрдВрдб рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз [рдП; рдмреА) рдорд╛рдирдХ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ: рд╕рд░рдгреА рд╕реЗ рд╡рд╛рдВрдЫрд┐рдд рд╕реЗрдЧрдореЗрдВрдЯ рдХреЛ рдХрд╛рдЯреЗрдВ (рдпрд╣ рди рднреВрд▓реЗрдВ рдХрд┐ рдкрд╣рд▓реЗ рдХрдЯ рдХреЗ рдмрд╛рдж, рд╕рд╣реА рдкрд░рд┐рдгрд╛рдо рдореЗрдВ рд╡рд╛рдВрдЫрд┐рдд рд╕реВрдЪрдХрд╛рдВрдХ рдХрдо рд╣реЛ рдЧрдпрд╛ рд╣реИ!) рдФрд░ рдЗрд╕рдХреЗ рд░реВрдЯ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдорд╛рди рд▓реМрдЯрд╛рдПрдВред

рд╕реНрд░реЛрдд рдХреЛрдб - рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рдЕрдзрд┐рдХрддрдо рдХреЗ рд▓рд┐рдПред

 public double MaxTreeCost; public static double CostOf(ImplicitTreap treap) { return treap == null ? double.NegativeInfinity : treap.MaxTreeCost; } public void Recalc() { Size = SizeOf(Left) + SizeOf(Right) + 1; MaxTreeCost = Math.Max(Cost, Math.Max(CostOf(Left), CostOf(Right))); } public double MaxCostOn(int A, int B) { ImplicitTreap l, m, r; this.Split(A, out l, out r); r.Split(B - A, out m, out r); return CostOf(m); }
      
      







рдПрдХ рд╕реЗрдЧрдореЗрдВрдЯ рдкрд░ рдХрдИ рдСрдкрд░реЗрд╢рди


рдлреЛрдХрд╕ рдирдВрдмрд░ 4: рдЕрдм O (рд▓реЙрдЧ 2 рдПрди) рдХреЗ рд▓рд┐рдП рд╣рдо рдРрд░реЗ рдХреЗ рд╕рдм-рд╕реЗрдЧрдореЗрдВрдЯ рдкрд░ рджреВрд╕рд░реЗ рднрд╛рдЧ рд╕реЗ рдСрдкрд░реЗрд╢рди рдХрд░реЗрдВрдЧреЗ: рдПрдХ рдирд┐рд░рдВрддрд░ рдЬреЛрдбрд╝рдирд╛, рдкреЗрдВрдЯрд┐рдВрдЧ, рдПрдХ рдПрдХрд▓ рдорд╛рди рдкрд░ рд╕реЗрдЯ рдХрд░рдирд╛, рдЖрджрд┐ред



рдорд░реНрдЬ рдФрд░ рд╕реНрдкреНрд▓рд┐рдЯ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде, рдХрд╛рд░рдЯреЗрд╢рд┐рдпрди рд╡реГрдХреНрд╖ рдореЗрдВ рдЖрд╕реНрдердЧрд┐рдд рдЧрдгрдирд╛ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реИред рдХрд╛рдо рдХрд╛ рдореВрд▓ рд╕рд┐рджреНрдзрд╛рдВрдд рдПрдХ рд╣реА рд╣реИ: рдХрд┐рд╕реА рднреА рдСрдкрд░реЗрд╢рди рдХреЛ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╡рдВрд╢рдЬреЛрдВ рдХреЛ тАЬрдПрдХ рд╡рд╛рджрд╛ рдзрдХреНрдХрд╛тАЭред рдпрджрд┐ рдЖрдкрдХреЛ рдСрдкрд░реЗрд╢рди рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдкрд┐рдЫрд▓реЗ рдЕрдиреБрднрд╛рдЧ рд╕реЗ рдХрдИ рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ "рдиреНрдпрд╛рдп рдмрд╣рд╛рд▓ рдХрд░рдиреЗ" рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред



рдПрдХ рд╕реЗрдЧрдореЗрдВрдЯ рдкрд░ рдПрдХ рдСрдкрд░реЗрд╢рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рдЗрд╕ рд╕реЗрдЧрдореЗрдВрдЯ рдХреЛ рджреЛ рд╕реНрдкреНрд▓рд┐рдЯ рдХреЙрд▓ рдХреЗ рд╕рд╛рде рдкреЗрдбрд╝ рд╕реЗ рдХрд╛рдЯрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рджреЛ рдорд░реНрдЗрд▓ рдХреЙрд▓ рдХреЗ рд╕рд╛рде рдлрд┐рд░ рд╕реЗ рдкреЗрд╕реНрдЯ рдХрд░реЗрдВред

рдЖрд▓рд╕реА рдХреЗ рд▓рд┐рдП, рдореИрдВ рдирдП рдорд░реНрдЬ / рд╕реНрдкреНрд▓рд┐рдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди (рд╡реЗ 1-2 рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рднрд┐рдиреНрди рд╣реЛрддреЗ рд╣реИрдВ) рдХреЗ рд╕рд╛рде-рд╕рд╛рде Push



рдкреБрд╢ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рд╕реНрд░реЛрдд рдХреЛрдб рд▓рд╛рддреЗ рд╣реИрдВ:

 public double Add; public static void Push(ImplicitTreap treap) { if (treap == null) return; treap.Cost += treap.Add; if (treap.Left != null) treap.Left.Add += treap.Add; if (treap.Right != null) treap.Right.Add += treap.Add; treap.Add = 0; } public void Recalc() { Size = SizeOf(Left) + SizeOf(Right) + 1; } public static ImplicitTreap Merge(ImplicitTreap L, ImplicitTreap R) { // ! Push( L ); Push( R ); if (L == null) return R; if (R == null) return L; ImplicitTreap answer; if (Ly > Ry) { var newR = Merge(L.Right, R); answer = new ImplicitTreap(Ly, L.Cost, L.Left, newR); } else { var newL = Merge(L, R.Left); answer = new ImplicitTreap(Ry, R.Cost, newL, R.Right); } answer.Recalc(); return answer; } public void Split(int x, out ImplicitTreap L, out ImplicitTreap R) { Push(this); // ! ImplicitTreap newTree = null; int curIndex = SizeOf(Left) + 1; if (curIndex <= x) { if (Right == null) R = null; else Right.Split(x - curIndex, out newTree, out R); L = new ImplicitTreap(y, Cost, Left, newTree); L.Recalc(); } else { if (Left == null) L = null; else Left.Split(x, out L, out newTree); R = new ImplicitTreap(y, Cost, newTree, Right); R.Recalc(); } } public ImplicitTreap IncCostOn(int A, int B, double Delta) { ImplicitTreap l, m, r; this.Split(A, out l, out r); r.Split(B - A, out m, out r); m.Add += Delta; return Merge(Merge(l, m), r); }
      
      







рдЕрдиреБрдордд рд╕рдВрдЪрд╛рд▓рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рд╡рд┐рд╖рдпрд╛рдВрддрд░:

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдкреБрдирд░рд╛рд╡рд░реНрддреА рд╡реГрдХреНрд╖ рд╕рдВрд░рдЪрдирд╛ рдФрд░ рдЖрд╕реНрдердЧрд┐рдд рдЧрдгрдирд╛ рдЖрдкрдХреЛ рдХрд┐рд╕реА рднреА рдореЛрдиреЙрдЗрдб рдСрдкрд░реЗрд╢рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рдПрдХ рдореЛрдиреЛрдЗрдб рдмрд╛рдЗрдирд░реА рдСрдкрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рдПрдХ рд╕реЗрдЯ рд╣реИ, рдЬрд┐рд╕ рдкрд░ set рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЧреБрдг рд╣реИрдВ:

тАв рд╕рдВрдмрджреНрдзрддрд╛ - рдХрд┐рд╕реА рднреА рддрддреНрд╡ a, b, c рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ (тЧж b) = c = a тЧж (b тЧж c) рд╣реИ ред

тАв рдПрдХ рддрдЯрд╕реНрде рддрддреНрд╡ рдХрд╛ рдЕрд╕реНрддрд┐рддреНрд╡ - рд╕реЗрдЯ рдореЗрдВ рдПрдХ рддрддреНрд╡ рдИ рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рднреА рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рдП, = рдИ = рдИ e рдП = рдП ред

рдлрд┐рд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рдСрдкрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдЦрдВрдбреЛрдВ рдХреЗ рдПрдХ рдкреЗрдбрд╝ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдФрд░ рдЗрд╕реА рддрд░рд╣ рдХреЗ рдХрд╛рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП, рдПрдХ рдХрд╛рд░реНрдЯреЗрд╢рд┐рдпрди рдкреЗрдбрд╝ред





рдкрд▓рдЯреЗрдВ


рдлреЛрдХрд╕ рдирдВрдмрд░ 5 рдПрдХ рд╕рдмрд╕реЗрдкреНрд╢рди рдлреНрд▓рд┐рдк рд╣реИ, рдЕрд░реНрдерд╛рдд, рд░рд┐рд╡рд░реНрд╕ рдСрд░реНрдбрд░ рдореЗрдВ рдЗрд╕рдХреЗ рддрддреНрд╡реЛрдВ рдХрд╛ рдкреБрдирд░реНрд╡реНрдпрд╡рд╕реНрдерд╛ред



рдФрд░ рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рдореИрдВ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд░реБрдХреВрдВрдЧрд╛ред рдХрд┐рд╕реА рд╕рд░рдгреА рдХреЛ рдореЛрдбрд╝рдирд╛ рдПрдХ рдореЛрдиреЙрдпрдбрд▓ рдСрдкрд░реЗрд╢рди рдирд╣реАрдВ рд╣реИ - рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ, рдпрд╣ рдХрд┐рд╕реА рднреА рд╕реЗрдЯ рдкрд░ рдмрд╛рдЗрдирд░реА рдСрдкрд░реЗрд╢рди рдирд╣реАрдВ рд╣реИ - рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреАред рдЗрд╕ рдХрд╛рд░реНрдп рдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдкреБрд╢ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдЖ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рдЪреВрдВрдХрд┐ рдПрдХ рдСрдкрд░реЗрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдзрдХреНрдХрд╛ рджреЗрдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рд╣реИ, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕реЗ рджреЗрд░реА рдХреЗ рд░реВрдк рдореЗрдВ рдорд╣рд╕реВрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред



рдЗрд╕рд▓рд┐рдП, рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рд╢реАрд░реНрд╖ рдкрд░ рдПрдХ рдмреВрд▓рд┐рдпрди рдорд╛рди рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдВрдЧреЗ - рдУрд╡рд░рдЯрд░реНрди рдмрд┐рдЯред рдпрд╣ рдПрдХ рдЖрд╕реНрдердЧрд┐рдд рд╡рд╛рджрд╛ рд╣реЛрдЧрд╛ "рд╕рд░рдгреА рдХреЗ рдЗрд╕ рдЦрдВрдб рдХреЛ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред" рдлрд┐рд░, рдЗрд╕ рдзрд╛рд░рдгрд╛ рдкрд░ рдХрд┐ рд╣рдо рдЗрд╕ рдмрд┐рдЯ рдХреЛ Push



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



рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдХреБрдЫ рд╢реАрд░реНрд╖ рдЯреА рдкрд░ рдЕрд╡рдЬреНрдЮрд╛ рдХреЛ рдЙрд▓рдЯрдиреЗ рдХрд╛ рд╡рд╛рджрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд░реЗрдВ:

тАв рд╡рд░реНрддрдорд╛рди рд╢реАрд░реНрд╖ рдкрд░ рдПрдХ рд╡рд╛рджрд╛ рдХрд░реЗрдВ:

  T.Reversed = false; 
тАв рдЙрдирдХреЗ рдмрд╛рдПрдБ рдФрд░ рджрд╛рдПрдБ рдмреЗрдЯреЗ рдХреЛ рд╕реНрд╡реИрдк рдХрд░реЗрдВред

  temp = T.Left;
   рдЯреА.рд▓рд┐рдлреНрдЯ = рдЯреАред рд░рд╛рдЗрдЯ;
   рдЯреАред рд░рд╛рдЗрдЯ = рдЯреЗрдореНрдк; 
тАв рдкрджрд╛рд╡рдирддрд┐ рдХрд╛ рд╡рд╛рджрд╛ рдмрджрд▓реЗрдВред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ: рд╕рд╣реА рдкрд░ рд╕реЗрдЯ рди рдХрд░реЗрдВ (рд╣рдо рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ рдпрд╣ рдмрд┐рдЯ рдЕрдм рддрдХ рд╡рдВрд╢рдЬреЛрдВ рдХреЗ рд╕рд╛рде рд╣реИ!), рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдмрджрд▓ рджреЗрдВред рдЗрд╕рдХреЗ рд▓рд┐рдП рдСрдкрд░реЗрд╢рди ^ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

  T.Left.Reversed ^ = true;
   T.Right.Reversed ^ = рд╕рдЪ; 


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



рдиреЛрдЯ - рд╕рд╛рдзрд╛рд░рдг рдХрд╛рд░реНрдЯреЗрд╢рд┐рдпрди рдкреЗрдбрд╝реЛрдВ рдХреЗ рд╕рд╛рде рдЗрд╕ рддрд░рд╣ рдХреА рдзреЛрдЦрд╛рдзрдбрд╝реА рдирд╣реАрдВ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдЦреЛрдЬ рдЯреНрд░реА рдХреА рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд░рддреЗ рд╣реИрдВ - рджрд╛рдПрдВ рд╕рдмрдЯреНрд░реА рдореЗрдВ рдХреБрдВрдЬрд┐рдпрд╛рдВ рдмрд╛рдИрдВ рдУрд░ рдХреА рдХреБрдВрдЬрд┐рдпреЛрдВ рд╕реЗ рдХрдо рд╣реЛрддреА рд╣реИрдВред рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рдирд┐рд╣рд┐рдд рдХрд╛рд░реНрдЯреЗрд╢рд┐рдпрди рдкреЗрдбрд╝ рдореЗрдВ рдХреЛрдИ рдХреБрдВрдЬреА рдирд╣реАрдВ рд╣реИ, рдФрд░ рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рд╣рдореЗрд╢рд╛ рд╕рдореНрдорд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдкреЗрдбрд╝ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдЯреВрдЯрддрд╛ рд╣реИред



рдХрд┐рд╕реА рдЦрдВрдб рдХреЛ рдЪрд╛рд▓реВ рдХрд░рдиреЗ рдХрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд╛рд░реНрдп рдХрд┐рд╕реА рдЕрдиреНрдп рдСрдкрд░реЗрд╢рди рдХреА рддрд░рд╣, рдПрдХ рдЕрдЬреЗрдп рд╕рд┐рджреНрдзрд╛рдВрдд рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ: рд╡рд╛рдВрдЫрд┐рдд рдЦрдВрдб рдХреЛ рдХрд╛рдЯреЗрдВ, рдЗрд╕рдХреА рдЬрдбрд╝ рдореЗрдВ рдПрдХ рд╡рд╛рджрд╛ рд╕реЗрдЯ рдХрд░реЗрдВ, рдФрд░ рдЦрдВрдб рдХреЛ рд╡рд╛рдкрд╕ рдЪрд┐рдкрдХрд╛рдПрдВред рдпрд╣рд╛рдБ рдзрдХреНрдХрд╛ рдФрд░ рдлреНрд▓рд┐рдк рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдХреЛрдб рд╣реИ:

 public bool Reversed; public static void Push(ImplicitTreap treap) { if (treap == null) return; //    -   if (!treap.Reversed) return; var temp = treap.Left; treap.Left = treap.Right; treap.Right = temp; treap.Reversed = false; if (treap.Left != null) treap.Left.Reversed ^= true; if (treap.Right != null) treap.Right.Reversed ^= true; } public ImplicitTreap Reverse(int A, int B) { ImplicitTreap l, m, r; this.Split(A, out l, out r); r.Split(B - A, out m, out r); m.Reversed ^= true; return Merge(Merge(l, m), r); }
      
      







рдЕрдм рдЖрдк рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирдП рддрд░реАрдХреЗ рд╕реЗ рдХреНрд▓рд╛рд╕рд┐рдХ рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рдХрд╛рд░реНрдп рдХреЛ рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ :)



рдкрд╛рд╢ рдЕрд░реНрд░реЗ


рдлреЛрдХрд╕ # 6: рдЪрдХреНрд░реАрдп рдкрд╛рд░реАред рдЗрд╕ рдСрдкрд░реЗрд╢рди рдХрд╛ рд╕рд╛рд░, рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ, рдЖрдВрдХрдбрд╝реЗ рдореЗрдВ рд╕рдордЭрд╛рдирд╛ рдЖрд╕рд╛рди рд╣реИред







рдмреЗрд╢рдХ, рдПрдХ рдЪрдХреНрд░реАрдп рд╢рд┐рдлреНрдЯ рд╣рдореЗрд╢рд╛ O (N) рдореЗрдВ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдХрд╛рд░реНрдЯреЗрд╢рд┐рдпрди рдЯреНрд░реА рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд░рдгреА рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдХреЗ, рдЖрдк рдЗрд╕реЗ O (рд▓реЙрдЧ 2 рдПрди) рдореЗрдВ рд╢рд┐рдлреНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред K рджреНрд╡рд╛рд░рд╛ рдЫреЛрдбрд╝реА рдЧрдИ рд╢рд┐рдлреНрдЯрд┐рдВрдЧ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЯреНрд░рд╛рдЗрдЯ рд╣реИ: рд╣рдордиреЗ рдЗрдВрдбреЗрдХреНрд╕ K рдкрд░ рдкреЗрдбрд╝ рдХреЛ рдХрд╛рдЯ рджрд┐рдпрд╛ рдФрд░ рдЗрд╕реЗ рд░рд┐рд╡рд░реНрд╕ рдСрд░реНрдбрд░ рдореЗрдВ рдЧреЛрдВрдж рдХрд░ рджрд┐рдпрд╛ред рджрд╛рдИрдВ рдУрд░ рд╢рд┐рдлреНрдЯ рд╕рдордорд┐рдд рд╣реИ, рдХреЗрд╡рд▓ рдЗрд╕реЗ рдПрдирдХреЗ рдЗрдВрдбреЗрдХреНрд╕ рджреНрд╡рд╛рд░рд╛ рдХрд╛рдЯрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред



 public ImplicitTreap ShiftLeft(int K) { ImplicitTreap l, r; this.Split(K, out l, out r); return Merge(r, l); }
      
      







рдлрд┐рд░ рд╕реЗ: рдСрдкрд░реЗрд╢рди рдПрдХ рдирд┐рд╣рд┐рдд рдХреБрдВрдЬреА рджреНрд╡рд╛рд░рд╛ рдХрд╛рд░реНрдЯреЗрд╢рд┐рдпрди рдкреЗрдбрд╝реЛрдВ рдХреЗ рд▓рд┐рдП рдЕрджреНрд╡рд┐рддреАрдп рд╣реИ, рджреЛ рд╕реНрдкреНрд▓рд┐рдЯ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдмрд╛рдж рд╕реЗ, рдЪрд╛рд╣реЗ рд╡реЗ рд╕рд╛рдзрд╛рд░рдг рдХрд╛рд░рдЯреЗрд╢рд┐рдпрди рдкреЗрдбрд╝ рд╣реЛрдВ, рдЕрд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИрдВ: рдЖрдЦрд┐рд░рдХрд╛рд░, рдорд░реНрдЬ рдХреЛ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╣рдо рд╕реЗ рдкреЗрдбрд╝реЛрдВ рдХрд╛ рдЖрджреЗрд╢ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рд╣рдо рдЗрд╕реЗ рдЧрд▓рдд рдХреНрд░рдо рдореЗрдВ рддрд░реНрдХ рджреЗрддреЗ рд╣реИрдВред



рд╕рд╛рд░рд╛рдВрд╢



рдирд┐рд╣рд┐рдд рдХреБрдВрдЬреА рджреНрд╡рд╛рд░рд╛ рдПрдХ рдХрд╛рд░реНрдЯреЗрд╢рд┐рдпрди рдкреЗрдбрд╝ рдПрдХ рдкреЗрдбрд╝ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╕рд░рдгреА рдХрд╛ рдПрдХ рд╕рд░рд▓ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рд▓реЙрдЧрд░рд┐рджрдорд┐рдХ рд╕рдордп рдореЗрдВ рдЗрд╕рдХреЗ рд╕рд╛рде рдФрд░ рдЗрд╕рдХреЗ рдЙрдк-рднрд╛рдЧреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕реА рд╕рдордп, рдУ (рдПрди) рдЕрднреА рднреА рд╕реНрдореГрддрд┐ рдХреЛ рдмрд░реНрдмрд╛рдж рдХрд░ рд░рд╣рд╛ рд╣реИред рдмреЗрд╢рдХ, рдУ-рд╕рдВрдХреЗрддрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдореИрдВрдиреЗ рдЕрдкрдиреЗ рджрд┐рд▓ рдХреЛ рдереЛрдбрд╝рд╛ рдЯреЗрдврд╝рд╛ рдХрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬреАрд╡рди рдореЗрдВ рдкреЗрдбрд╝ рджреНрд╡рд╛рд░рд╛ рдХрдмреНрдЬрд╛ рдХреА рдЧрдИ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реНрдореГрддрд┐ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдФрд░ рдХрд╛рд░реНрдЯреЗрд╢рд┐рдпрди рд╡реГрдХреНрд╖ рдЕрдкрдиреЗ рдЙрдкрд░рд┐ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╕рд┐рджреНрдз рд╣реИред рдЦреБрдж рдХреЗ рд▓рд┐рдП рдиреНрдпрд╛рдпрд╛рдзреАрд╢: рд╕реВрдЪрдирд╛ рдХреЗ рд▓рд┐рдП рдПрди, рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрди, рд╡рдВрд╢рдЬреЛрдВ рдХреЗ рд▓рд┐рдВрдХ рдХреЗ рд▓рд┐рдП 2 рдПрди, рдЙрдкрдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдПрди - рдпрд╣ рдПрдХ рдЬреАрд╡рд┐рдд рдордЬрджреВрд░реА рд╣реИ, рдФрд░ рдпрджрд┐ рдЖрдк рдХрдИ рдЕрдиреБрд░реЛрдз рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рдСрдкрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдПрди рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рдЖрдк рдЬрд╛рдирдХрд╛рд░реА рд╕реЗ рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдПрдБ рдмрдирд╛рдХрд░ рдЕрдкрдиреЗ рдЬреАрд╡рди рдХреЛ рдереЛрдбрд╝рд╛ рдмреЗрд╣рддрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ , рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╕рдореБрджреНрд░ рдореЗрдВ рдПрдХ рдмреВрдВрдж (рд╕рд┐рд░реНрдл рд╢реВрдиреНрдп рд╕реЗ N) рд╣реИ, рдФрд░ рджреВрд╕рд░реА рдмрд╛рдд, рдпрд╣ рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдкрд░рд┐рдгрд╛рдореЛрдВ рд╕реЗ рднрд░рд╛ рд╣реИ: рдпрджрд┐ рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рдЙрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рд╕реЗ рдЖрдк рдмрдирд╛рддреЗ рд╣реИрдВ рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдПрдВ, рддреЛ рдпрд╣ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдЖрдкрдХреЛ рдХрд╛рд░реНрдЯреЗрд╕рд┐рдпрди рдкреЗрдбрд╝ рдХреЛ рдмрд╣реБрдд рдЕрд╕рдВрддреБрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рддрд░реАрдХреЗ рд╕реЗ рдмрдирд╛рдП рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирдП рд░рд┐рдХреЙрд░реНрдб рджреЗрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛ред рдЕрдВрдд рдореЗрдВ, рдПрдХ рд╕реНрдерд┐рддрд┐ рд╕рдВрднрд╡ рд╣реИ рдЬрдм рдЖрдкрдХреЗ рд╕рднреА рдбреЗрдЯрд╛ рдХрд╛рдлрд╝реА рдзреАрдорд╛ рд╣реЛ рдЬрд╛рдПрдЧрд╛ - рд╣рд╛рд▓рд╛рдВрдХрд┐ рдРрд╕реЗ рдорд╛рдорд▓реЗ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдкрдврд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рдХрд╛рд░реНрдп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЖрдк рдкреЗрдбрд╝ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдЪрдХреНрдХрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ primes P рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЦрддрд░реЗ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ ... рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдЕрд▓рдЧ рд╡реИрдЬреНрдЮрд╛рдирд┐рдХ рдЕрдзреНрдпрдпрди рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╖рдп рд╣реИред рдореЗрд░реЗ рд▓рд┐рдП рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдХрд╛рд░реНрдЯреЗрд╢рд┐рдпрди рдкреЗрдбрд╝ рдХреА рдХреНрд╖рдорддрд╛ рдФрд░ рдЗрд╕рдХреЗ рдХреЛрдб рдХреА рд╕рд╛рджрдЧреА рдРрд╕реЗ рдлрд╛рдпрджреЗ рд╣реИрдВ рдЬреЛ рдЙрдЪреНрдЪ рдореЗрдореЛрд░реА рдЦрдкрдд рдХреА рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдмреЗрд╢рдХ, рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрдХреНрд░рдо рдЕрд▓рдЧ рд╣реИред



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



рдХрд╛рд░реНрдЯреЗрд╢рд┐рдпрди рдкреЗрдбрд╝ рдкрд░ рдЕрдирд┐рд╡рд╛рд░реНрдп рдХрд╛рд░реНрдпрдХреНрд░рдо рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ рдореИрдВ рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реВрдВред рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдХрдо рд╕реЗ рдХрдо рдПрдХ рдпрд╛ рджреЛ рднрд╛рдЧ рдмрд╛рдж рдореЗрдВ рд╣реЛрдВрдЧреЗ - рдкреЗрдбрд╝ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд╡реИрдХрд▓реНрдкрд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдФрд░ рдЗрд╕рдХреЗ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ - рд╣рд╛рд▓рд╛рдВрдХрд┐, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рд┐рджреНрдзрд╛рдВрдд рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рддреАрдиреЛрдВ рдЬреАрд╡рди рдореЗрдВ рд╡реНрдпреБрддреНрдкрдиреНрди рдХреЗ рдкреВрд░реНрдг рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдЧреЛрд▓рд╛-рдмрд╛рд░реВрдж рдмрдирд╛рддреЗ рд╣реИрдВред рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреА рддрд░реНрдЬ рдкрд░ рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рдореЗрд░реЗ рд╕рд╛рде рдХреБрд╢реНрддреА рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рд▓реЛрдЧреЛрдВ рдХрд╛ рдзрдиреНрдпрд╡рд╛рдж :) рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдк рд░реБрдЪрд┐ рд░рдЦрддреЗ рдереЗред



All Articles