рдЯреЗрдЯреНрд░рд┐рд╕ рдХреЗ рд▓рд┐рдП рдмреЙрдЯ рдФрд░ рд░рд┐рд╡рд░реНрд╕ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рдПрдиреАрдореЗрд╢рдиред рджреВрд╕рд░реА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдЪреИрдореНрдкрд┐рдпрдирд╢рд┐рдк рдХреЗ рдореЛрдмрд╛рдЗрд▓ рдЯреНрд░реИрдХ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг


рдореЛрдмрд╛рдЗрд▓ рдЯреНрд░реИрдХ рд╡рд┐рдЬреЗрддрд╛

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

A. рдХреЗрдмрд▓

рджреНрд╡рд╛рд░рд╛ рдкреЛрд╕реНрдЯ: рд╕рд░реНрдЧреЗрдИ Myasnikov
рд╕рднреА рднрд╛рд╖рд╛рдПрдБрдкрд╛рдпрдерди 3.7.3 рдФрд░ рдкрд╛рдпрдерди 2.7
рд╕рдордп рд╕реАрдорд╛4 рдПрд╕20 рдПрд╕
рдореЗрдореЛрд░реА рдХреА рд╕реАрдорд╛256 рдПрдордмреА
рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдорд╛рдирдХ рдЗрдирдкреБрдЯ рдпрд╛ input.txt
рдирд┐рд╖реНрдХрд░реНрд╖рдорд╛рдирдХ рдЙрддреНрдкрд╛рджрди рдпрд╛ output.txt
рдПрди рдХрдВрдкреНрдпреВрдЯрд░реЛрдВ рдХреЛ рдирдП рдХрд╛рд░реНрдпрд╛рд▓рдп рдореЗрдВ рд▓рд╛рдпрд╛ рдЧрдпрд╛ред рдкрд╛рд╕ рдХреЗ рд░реЗрдбрд┐рдпреЛ рдЯреЗрд▓реАрд╕реНрдХреЛрдк рд╕рдВрдЪрд╛рд░ рдХреЗ рд▓рд┐рдП рд╡рд╛рдИ-рдлрд╛рдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВ, рдФрд░ рд╣реЗрд▓реНрдк рдбреЗрд╕реНрдХ рдХреЛ рд▓реИрди рдХреЗрдмрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдиреЗрдЯрд╡рд░реНрдХ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдХреЛрдиреЛрдВ рдореЗрдВ рдЪрд╛рд░реЛрдВ рдУрд░ рдкрдбрд╝реА рд╕рднреА рдХреЗрдмрд▓реЛрдВ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдХрдВрдкреНрдпреВрдЯрд░реЛрдВ рдХреЗ K рдЬреЛрдбрд╝реЗ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣реЗред рдПрдХ рд▓рдВрдмреЗ рдХрд╛рд░реНрдп рджрд┐рд╡рд╕ рдХреЗ рдмрд╛рдж рдердХ рдЧрдП, рд╣реЗрд▓реНрдкрдбреЗрд╕реНрдХ рдХрд░реНрдордЪрд╛рд░реА рдорджрдж рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рдкрд╛рд╕ рдЧрдП - рдХрд╛рд░реНрдп рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдмрдЬрдЯ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЗ рдкрд╛рд╕ рдХрдВрдкреНрдпреВрдЯрд░реЛрдВ рдХреЗ рдПрдо рдЬреЛрдбрд╝реЗ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИ, рдЬреЛ рдПрдбрд┐рдВрд╕, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдХреЗрдмрд▓ рдХреА рд▓рд╛рдЧрдд рдХреЛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдЬрдм рдЖрдк рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд▓рд╛рдЧрдд рдЧрдгрдирд╛ рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдПрдХ рдмрдЧ рдорд┐рд▓рд╛ - рд▓рд╛рдЧрдд рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рд╡реЗ рдЧреБрдгрд╛ рдХрд░рддреЗ рд╣реИрдВ - рдЗрд╕рд▓рд┐рдП 4 рдХреЗ рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде рдПрдХ рдХреЗрдмрд▓ рдФрд░ 3 рдХреЗ рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде рдПрдХ рдХреЗрдмрд▓ 7 рдирд╣реАрдВ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рддрд░реНрдХ рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди 12ред

рдХрд╛рд░реНрдп рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХрдиреЗрдХреНрдЯреЗрдб рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рд╕рдВрдЧрдарди рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдХреЗрдмрд▓ рдХреА рд▓рд╛рдЧрдд рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдЬреИрд╕реЗ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдХрдВрдкреНрдпреВрдЯрд░ рдкреНрд░рддреНрдпрдХреНрд╖ рдпрд╛ рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рд░реВрдк рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред

I / O рдкреНрд░рд╛рд░реВрдк, рдЙрджрд╛рд╣рд░рдг рдФрд░ рдиреЛрдЯреНрд╕

рдЗрдирдкреБрдЯ рдкреНрд░рд╛рд░реВрдк


рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдореЗрдВ рдирдВрдмрд░ 0 <N <10 6 , 0 10 K <10 6 , 0 <M <10 6 рд╣реИрдВ ред

рдЕрдЧрд▓реА K рд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ 0 <u, v the N рдХреЗ рдЬреЛрдбрд╝реЗ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ - рд╣реЗрд▓реНрдкрдбреЗрд╕реНрдХ рджреНрд╡рд╛рд░рд╛ рдкрд╣рд▓реЗ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд┐рдП рдЧрдП рдХрдВрдкреНрдпреВрдЯрд░реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ред

рдЕрдЧрд▓реА рдПрдо рд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ 0 <u, v 0 N рдФрд░ 0 <p 9 10 9 рдХреА рд╕рдВрдЦреНрдпрд╛рдПрдБ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ - рдХрдВрдкреНрдпреВрдЯрд░ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЬреЛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдХреЗрдмрд▓ рд▓рд╛рдЧрдд рдкреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдиреЗрдХреНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЖрдЙрдЯрдкреБрдЯ рд╕реНрд╡рд░реВрдк


рдХрдиреЗрдХреНрдЯреЗрдб рдиреЗрдЯрд╡рд░реНрдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдХреЗрдмрд▓ рдХреА рдиреНрдпреВрдирддрдо рд▓рд╛рдЧрдд рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдВ, рдпрд╛ -1 рдХреЛ рдкреВрд░реНрдг рдиреЗрдЯрд╡рд░реНрдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд╕рдВрднрд╡ рд╣реИред

рдЗрд╕рдХрд╛ рдЙрддреНрддрд░ рдмрд╣реБрдд рдмрдбрд╝рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЗрд╕реЗ modulo 2 31 - 1 рдЖрдЙрдЯрдкреБрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг 1

рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдирд┐рд╖реНрдХрд░реНрд╖
2 0 1
2 1 9
9

рдЙрджрд╛рд╣рд░рдг 2

рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдирд┐рд╖реНрдХрд░реНрд╖
5 0 6
1 3 1
2 4 8
1 4 1
1 2 10
4 1 10
5 3 4
32

рдЙрджрд╛рд╣рд░рдг 3

рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдирд┐рд╖реНрдХрд░реНрд╖
6 0 3
4 3 2
2 6 9
1 4 8
тАУ1

рдиреЛрдЯ


рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рдХреА рдорд╛рддреНрд░рд╛ 30 рдПрдордмреА рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддреА рд╣реИ - рдкрдврд╝рдиреЗ рдХреА рдЧрддрд┐ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред

рдирд┐рд░реНрдгрдп


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

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

рдиреНрдпреВрдирддрдо рдлреИрд▓реЗ рд╣реБрдП рдкреЗрдбрд╝ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдкреНрд░рд╕рд┐рджреНрдз рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдкреНрд░рд╛рдЗрдорд╛ рдФрд░ рдХреНрд░реИрд╕реНрдХрд▓ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рд╣реИрдВред

рдШрдиреЗ рд░реЗрдЦрд╛рдВрдХрди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, Prym рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдореЗрдВ asymptotics O (N 2 ) рд╣реИ, рдЬреЛ рдкреНрд░рддрд┐рдмрдВрдз N <10 6 рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП , рд╕рдорд╕реНрдпрд╛ рдХреЗ рдкреВрд░реНрдг рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред (рд▓реЗрдХрд┐рди рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рдбреЗрдЯрд╛ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рддрд╛рдХрд┐ рд╕рдВрдХреЗрддрд┐рдд рд╕реНрдкрд░реНрд╢реЛрдиреНрдореБрдЦ рджрд╡рд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдзрд╛рди рдмрд┐рд▓реНрдХреБрд▓ рдЖрдзрд╛ рдмрд┐рдВрджреБ рд╣реЛ рд╕рдХреЗ)

рдХреНрд░реБрд╕реНрд▓ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдПрдХ рднреЛрд▓реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЬреЛ рдЧреНрд░рд╛рдлрд╝ рд╕реЗ рдЬреБрдбрд╝реЗ рдШрдЯрдХреЛрдВ рдХреА рд╡рд░реНрддрдорд╛рди рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рдгреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рдореЗрдВ рдПрд╕рд┐рдореНрдкреЛрдЯрд┐рдХреНрд╕ рдУ (рдПрдо рд▓реЙрдЧ рдПрдо + рдПрди 2 ) рд╣реИред рдпрд╣рд╛рдБ рдпрд╣ O (N 2 ) рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред рд╕рдВрдкреВрд░реНрдг рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬрд┐рд╕реЗ рдбрд┐рд╕рдСрдЗрдВрдЯ-рд╕реЗрдЯ рдпреВрдирд┐рдпрди (DSU) рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред

рдбреАрдПрд╕рдпреВ рдЖрдкрдХреЛ рджреЛ рдСрдкрд░реЗрд╢рди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ: рдЦреЛрдЬ (рдПрдХреНрд╕) рдЙрд╕ рд╕реЗрдЯ рдХреЗ "рдиреЗрддрд╛" рдХреЛ рдвреВрдВрдврддрд╛ рд╣реИ рдЬрд┐рд╕рд╕реЗ рдПрдХреНрд╕ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ (рдиреЗрддрд╛ рдХреЛ рдЗрдВрдЬреЗрдХреНрд╢рди рдХреЗ рд╕реЗрдЯ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЕрдиреБрд╡рд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ); рд╕рдВрдШ (x, y) рдЙрди рд╕реЗрдЯреЛрдВ рдХреЛ рдорд┐рд▓рд╛рддрд╛ рд╣реИ рдЬрд┐рдирд╕реЗ x рдФрд░ y рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВред

рдкрде рд╕рдВрдкреАрдбрд╝рди рд╣реЗрдпреЛрд░рд┐рд╕реНрдЯрд┐рдХ рдФрд░ рд░реИрдВрдХ рд╕рдВрдпреЛрдЬрди рд╣реЗрдпреБрд░рд┐рд╕реНрдЯрд┐рдХ, рдЖрдорддреМрд░ рдкрд░ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣рдореЗрдВ рдУ (1) рдХреЗ рдмрд░рд╛рдмрд░ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рд╕реНрдкрд░реНрд╢реЛрдиреНрдореБрдЦ рд╡реНрдпрд╡рд╣рд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдордиреЗ рдХреНрд░рд╕рдХ рдПрд▓реНрдЧреЛрд░рд┐рдердо рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рдЧреНрд░рд╛рдл рдХрдиреЗрдХреНрдЯрд┐рд╡рд┐рдЯреА рдШрдЯрдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП DSU рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рддрдм рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рд╕реНрдкрд░реНрд╢реЛрдиреНрдореБрдЦреА рд╡реНрдпрд╡рд╣рд╛рд░ O (M log M + N) = O (M log M) рд╣реЛрдЧрд╛ред

рдирд┐рд░реНрдгрдп рдХреЛрдб
 public class CablesSolution { private static final long MODULLO = 2147483647L; public static void main(String[] args) { InputReader in = new InputReader(System.in); PrintWriter pw = new PrintWriter(System.out); int n = in.readInt(); int k = in.readInt(); int m = in.readInt(); DisjointUnionSets dsu = new DisjointUnionSets(n + 1); for (int i = 0; i < k; i++) { int u = in.readInt(); int v = in.readInt(); dsu.union(u, v); } Edge[] edges = new Edge[m]; // (4 + 4 + 8) * 2M = 32M for (int i = 0; i < m; i++) { int u = in.readInt(); int v = in.readInt(); long p = in.readLong(); edges[i] = new Edge(u, v, p); } Arrays.sort(edges); long res = 1; boolean addedEdge = false; for (Edge edge : edges) { if (!dsu.check(edge.getU(), edge.getV())) { dsu.union(edge.getU(), edge.getV()); res = (res * edge.getP()) % MODULLO; addedEdge = true; } } if (!dsu.isJoint()) { res = -1; } else if (!addedEdge) { res = 0; } pw.println(res); pw.flush(); pw.close(); } public static class DisjointUnionSets { private int[] rank; // 4M private int[] parent; // 4M DisjointUnionSets(int size) { rank = new int[size]; parent = new int[size]; for (int i = 0; i < size; i++) { parent[i] = i; } } int find(int target) { if (parent[target] != target) { parent[target] = find(parent[target]); } return parent[target]; } boolean check(int x, int y) { return find(x) == find(y); } void union(int x, int y) { int xRoot = find(x); int yRoot = find(y); if (xRoot == yRoot) { return; } if (rank[xRoot] < rank[yRoot]) { parent[xRoot] = yRoot; } else if (rank[yRoot] < rank[xRoot]) { parent[yRoot] = xRoot; } else { parent[yRoot] = xRoot; rank[xRoot] = rank[xRoot] + 1; } } boolean isJoint() { int parent = -1; for (int i = 1; i < rank.length; i++) { if (parent == -1) { parent = find(i); } else { if (parent != find(i)) { return false; } } } return true; } } private static class Edge implements Comparable<Edge> { private int u; private int v; private long p; Edge(int u, int v, long p) { this.u = u; this.v = v; this.p = p; } int getU() { return u; } int getV() { return v; } long getP() { return p; } @Override public int compareTo(Edge edge) { return Long.compare(p, edge.p); } } } 

B. рдЦреЛрдпрд╛ рд╣реБрдЖ рд╡рд╛рдХреНрдпрд╛рдВрд╢

рдкреЛрд╕реНрдЯ рдХрд░рдиреЗрд╡рд╛рд▓реЗ: рджрд┐рдорд┐рддреНрд░реА рдлрд┐рд╕реНрдХреЛ

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

I / O рдкреНрд░рд╛рд░реВрдк, рдЙрджрд╛рд╣рд░рдг рдФрд░ рдиреЛрдЯреНрд╕

рдЗрдирдкреБрдЯ рдкреНрд░рд╛рд░реВрдк


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

рдПрдиреАрдореЗрд╢рди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдЧреНрд░рд╣ рд╕реЗ рд▓рд┐рдВрдХ рдХрд░реЗрдВ ред

рдкреНрд░рддреНрдпреЗрдХ рдПрдиреАрдореЗрд╢рди рдорд╛рдкрджрдВрдбреЛрдВ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
- рдХреИрдирд╡рд╛рд╕рд╡рд┐рдж рдХреИрдирд╡рд╛рд╕рд╣рд╛рдЗрдЯ - рдПрдиреАрдореЗрд╢рди рдХреЗ рд▓рд┐рдП рдХрдВрдЯреЗрдирд░ рдХреА рдЪреМрдбрд╝рд╛рдИ рдФрд░ рдКрдВрдЪрд╛рдИ, рдЗрдирдкреБрдЯ рдХреА рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИрдВ,
- рдЖрдВрдХрдбрд╝реЗрд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ - рдПрдирд┐рдореЗрдЯреЗрдб рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдЖрдВрдХрдбрд╝реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЗрдирдкреБрдЯ рдХреА рджреВрд╕рд░реА рдкрдВрдХреНрддрд┐ рдореЗрдВ рд╕реЗрдЯ рдХреА рдЬрд╛рддреА рд╣реИ,
- рдЖрдпрддрд╛рдХрд╛рд░ рдХреЗрдВрджреНрд░ XXY рдЪреМрдбрд╝рд╛рдИ рдЪреМрдбрд╝рд╛рдИ рдХреЛрдг рдХрд╛ рд░рдВрдЧ - рдПрдХ рдмрд┐рдВрджреБ рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рдПрдХ рдЖрдпрдд рдХреА рдШреЛрд╖рдгрд╛ (рдХреЗрдВрджреНрд░, рдХреЗрдВрджреНрд░), рдЪреМрдбрд╝рд╛рдИ ├Ч рдКрдВрдЪрд╛рдИ, рд░реЛрдЯреЗрд╢рди рдХреЛрдг рдХреЛрдг рдХреА рдбрд┐рдЧреНрд░реА рдФрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд░рдВрдЧ,
- рд╡реГрддреНрдд centerX рдХреЗрдВрджреНрд░Y рддреНрд░рд┐рдЬреНрдпрд╛ рд░рдВрдЧ - рдмрд┐рдВрджреБ (рдХреЗрдВрджреНрд░ x, рдХреЗрдВрджреНрд░) рддреНрд░рд┐рдЬреНрдпрд╛ рддреНрд░рд┐рдЬреНрдпрд╛ рдФрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд░рдВрдЧ рдореЗрдВ рдХреЗрдВрджреНрд░ рдХреЗ рд╕рд╛рде рдПрдХ рдЪрдХреНрд░ рдХреА рдШреЛрд╖рдгрд╛ред

рд░рдВрдЧ рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рдорд╛рди {рдХрд╛рд▓рд╛, рд▓рд╛рд▓, рд╕рдлреЗрдж, рдкреАрд▓рд╛} рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдХреЛрдг рдкреИрд░рд╛рдореАрдЯрд░ рд░реЗрдВрдЬ (-359 ┬░, 359 ┬░) рдореЗрдВ рдорд╛рди рд▓реЗрддрд╛ рд╣реИред

рдкреНрд░рддреНрдпреЗрдХ рдЖрдХреГрддрд┐ рдХреЗ рд▓рд┐рдП, рдХрдИ рдкреНрд░рдХрд╛рд░ рдХреЗ рдПрдиреАрдореЗрд╢рди рдПрдХ рдмрд╛рд░ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рд▓рд╛рдЧреВ рд╣реЛрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдПрдиреАрдореЗрд╢рди рдХреЛ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдПрдХ рдЖрдВрдХрдбрд╝реЗ рдкрд░ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЪрд┐рддреНрд░ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рдХрд┐рдП рдЧрдП рдПрдирд┐рдореЗрд╢рди рдХреА рд╕рдВрдЦреНрдпрд╛ 0 n рдЖрдВрдХрдбрд╝рд╛ рд╕рдВрдЦреНрдпрд╛ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА рдЧрдИ рд╣реИред рдЖрдВрдХрдбрд╝рд╛ рдШреЛрд╖рд┐рдд рд╣реЛрдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж тй╜ 3ред

рдПрдирд┐рдореЗрд╢рди рдХреЗ рдкреНрд░рдХрд╛рд░:
- рдЪрд╛рд▓ Destx рднрд╛рдЧреНрдп рд╕рдордп [рдЪрдХреНрд░] - рд╕рдордп рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдореЗрдВ рдПрдХ рдмрд┐рдВрджреБ (destX, рднрд╛рдЧреНрдп) рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрдВрдХрдбрд╝рд╛ рд▓реЗ рдЬрд╛рдПрдБред
- рдПрдВрдЧрд▓ рдЯрд╛рдЗрдо рд░реЛрдЯреЗрдЯ рдХрд░реЗрдВ [рд╕рд╛рдЗрдХрд▓] - рдЯрд╛рдЗрдо рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдореЗрдВ рдПрдВрдЧрд▓ рдбрд┐рдЧреНрд░реА рд╕реЗ рдлрд┐рдЧрд░ рдХреЛ рд░реЛрдЯреЗрдЯ рдХрд░реЗрдВ ред
- рдкреИрдорд╛рдиреЗ рдбрд┐рд╕реНрдХреНрд▓реЗрд╢ рд╕рдордп [рдЪрдХреНрд░] - рд╕рдордп рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдореЗрдВ рдбрд┐рд╕реНрдЯреЗрд╕реНрдХреЗрд▓ рджреНрд╡рд╛рд░рд╛ рдЖрдВрдХрдбрд╝рд╛ рдмрдврд╝рд╛рдПрдВред

рдпрджрд┐ рдЪрдХреНрд░ рдкреИрд░рд╛рдореАрдЯрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдПрдиреАрдореЗрд╢рди рдХреЗ рдЕрдВрдд рдореЗрдВ, рдЗрд╕рдХрд╛ рдЖрдВрджреЛрд▓рди рд╡рд┐рдкрд░реАрдд рджрд┐рд╢рд╛ рдореЗрдВ рдЬрд╛рд░реА рд╣реИред

рдЖрдЙрдЯрдкреБрдЯ рд╕реНрд╡рд░реВрдк


рдПрдиреАрдореЗрд╢рди рдЦреЗрд▓рддреЗ рд╕рдордп рдкреНрд░рджрд░реНрд╢рд┐рдд рдкрд╛рдаред рдкреНрд░рддреНрдпреЗрдХ рдПрдиреАрдореЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП, рдЙрддреНрддрд░ рдХреЛ рдПрдХ рдирдИ рд▓рд╛рдЗрди рдкрд░ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╡рд░реНрдгреЛрдВ рдХрд╛ рдорд╛рдорд▓рд╛ рдордирдорд╛рдирд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдПрдиреАрдореЗрд╢рди рдореЗрдВ рдкрд╛рдпрд╛ рдЧрдпрд╛ рдкреНрд░рддреНрдпреЗрдХ рдкрд╛рда 10 рдмрд┐рдВрджреБрдУрдВ рдкрд░ рдЖрдВрдХрд╛ рдЧрдпрд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг

рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдирд┐рд╖реНрдХрд░реНрд╖
400 400
10
rectangle 69.000 280.000 24.000 24.000 0.000 black
1
move 251.000 72.000 10000 cycle
rectangle 256.000 188.000 24.000 48.000 0.000 black
0
rectangle 232.000 152.000 72.000 24.000 0.000 black
0
rectangle 35.000 400.000 24.000 24.000 0.000 black
1
move 285.000 -96.000 10000 cycle
rectangle 244.000 248.000 48.000 24.000 0.000 black
0
rectangle 300.000 117.000 24.000 48.000 0.000 black
1
move 112.000 164.000 5000
rectangle 136.000 200.000 72.000 24.000 0.000 black
0
rectangle 160.000 236.000 24.000 48.000 0.000 black
0
rectangle 208.000 224.000 24.000 72.000 44.797 black
1
rotate -44.797 5000
rectangle 232.000 200.000 24.000 24.000 0.000 black
0
42

рдиреЛрдЯ


рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдПрдиреАрдореЗрд╢рди рдХрд╛ рджреГрд╢реНрдп:


рдирд┐рд░реНрдгрдп


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

рдПрдирд┐рдореЗрд╢рди рдЙрджрд╛рд╣рд░рдг ( .mov рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд▓рд┐рдВрдХ ):



рдкрд╛рдпрдерди рд╕реЗ рдЯрд┐рдВрдХрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
 import copy import math import time import tkinter from enum import Enum FRAMES_PER_SECOND = 60 TIME_BETWEEN_FRAMES = int(1000 / FRAMES_PER_SECOND) class Rectangle(object): def __init__(self, left_x, left_y, width, height, color, angle=0.0): self.center_x = left_x + width / 2 self.center_y = left_y + height / 2 self.width = width self.height = height self.color = color self.angle = angle def get_left_x(self): return self.center_x - self.width / 2 def set_left_x(self, left_x): self.center_x = left_x + self.width / 2 def get_left_y(self): return self.center_y - self.height / 2 def set_left_y(self, left_y): self.center_y = left_y + self.height / 2 left_x = property(get_left_x, set_left_x) left_y = property(get_left_y, set_left_y) class Circle(object): def __init__(self, left_x, left_y, radius, color): self.center_x = left_x + radius self.center_y = left_y + radius self.radius = radius self.color = color self.angle = 0 def get_left_x(self): return self.center_x - self.radius def set_left_x(self, left_x): self.center_x = left_x + self.radius def get_left_y(self): return self.center_y - self.radius def set_left_y(self, left_y): self.center_y = left_y + self.radius left_x = property(get_left_x, set_left_x) left_y = property(get_left_y, set_left_y) class AnimationType(Enum): MOVE = 1 ROTATE = 2 SCALE = 3 class Animation(object): def __init__(self, time, cycle): self.time = time self.cycle = cycle def scale(self, time_spent): return 1 def move(self, time_spent): return 0, 0 def angle(self, time_spent): return 0 def _cycle_progress(self, time_spent): if self.cycle: cycle_time = time_spent % (self.time * 2) if cycle_time > self.time: return 1 - (cycle_time - self.time) / self.time else: return cycle_time / self.time else: if time_spent < self.time: cycle_time = time_spent % self.time return cycle_time / self.time else: return 1 class MoveAnimation(Animation): def __init__(self, figure, to_x, to_y, time, cycle): super().__init__(time, cycle) self.from_x = figure.center_x self.from_y = figure.center_y self.to_x = to_x self.to_y = to_y def move(self, time_spent): cycle_progress = super()._cycle_progress(time_spent) diff_x = self.to_x - self.from_x diff_y = self.to_y - self.from_y return diff_x * cycle_progress, diff_y * cycle_progress class ScaleAnimation(Animation): def __init__(self, destination_scale, time, cycle): super().__init__(time, cycle) self.destination_scale = destination_scale def scale(self, time_spent): cycle_progress = super()._cycle_progress(time_spent) return 1 + (self.destination_scale - 1) * cycle_progress class RotateAnimation(Animation): def __init__(self, rotate_angle, time, cycle): super().__init__(time, cycle) self.rotate_angle = rotate_angle def angle(self, time_spent): cycle_progress = super()._cycle_progress(time_spent) return self.rotate_angle * cycle_progress class Transformer(object): def scale(self, scale): pass def move(self, diff_x, diff_y): pass def rotate(self, angle): pass class RectangleTransformer(Transformer): def __init__(self, rectangle): self.rectangle = rectangle def scale(self, scale): self.rectangle.width = self.rectangle.width * scale self.rectangle.height = self.rectangle.height * scale def move(self, diff_x, diff_y): self.rectangle.center_x = self.rectangle.center_x + diff_x self.rectangle.center_y = self.rectangle.center_y + diff_y def rotate(self, angle): self.rectangle.angle = (self.rectangle.angle + angle) % 360 class CircleTransformer(Transformer): def __init__(self, circle): self.circle = circle def scale(self, scale): self.circle.radius = self.circle.radius * scale def move(self, diff_x, diff_y): self.circle.center_x = self.circle.center_x + diff_x self.circle.center_y = self.circle.center_y + diff_y def rotate(self, angle): pass class Drawer(object): def draw(self, canvas, spent_time): pass class AnimationApplier(object): @staticmethod def apply_animations(spent_time, transformer, animations): for animation in animations: transformer.scale(animation.scale(spent_time)) diff_x, diff_y = animation.move(spent_time) transformer.move(diff_x, diff_y) transformer.rotate(animation.angle(spent_time)) class RectangleDrawer(Drawer): def __init__(self, rectangle, animations): self.rectangle = rectangle self.animations = animations def draw(self, canvas, spent_time): rect = self._transform_rect_with_animations(spent_time) rect_points = self._get_rectangle_points(rect) rotated_points = self._rotate(rect_points, rect.angle, [rect.center_x, rect.center_y]) canvas.create_polygon(rotated_points, fill=rect.color) def _transform_rect_with_animations(self, spent_time): rect = copy.copy(self.rectangle) transformer = RectangleTransformer(rect) AnimationApplier.apply_animations(spent_time, transformer, self.animations) return transformer.rectangle @staticmethod def _get_rectangle_points(rect): half_width = rect.width / 2 half_height = rect.height / 2 return [ [rect.center_x - half_width, rect.center_y - half_height], [rect.center_x - half_width, rect.center_y + half_height], [rect.center_x + half_width, rect.center_y + half_height], [rect.center_x + half_width, rect.center_y - half_height] ] @staticmethod def _rotate(points, angle, center): angle = math.radians(angle) cos_val = math.cos(angle) sin_val = math.sin(angle) cx, cy = center new_points = [] for x_old, y_old in points: x_old -= cx y_old -= cy x_new = x_old * cos_val - y_old * sin_val y_new = x_old * sin_val + y_old * cos_val new_points.append([x_new + cx, y_new + cy]) return new_points class CircleDrawer(Drawer): def __init__(self, circle, animations): self.circle = circle self.animations = animations def draw(self, canvas, spent_time): circle = self._transform_rect_with_animations(spent_time) size = circle.radius * 2 canvas.create_oval(circle.left_x, circle.left_y, circle.left_x + size, circle.left_y + size, fill=circle.color) def _transform_rect_with_animations(self, spent_time): circle = copy.copy(self.circle) transformer = CircleTransformer(circle) AnimationApplier.apply_animations(spent_time, transformer, self.animations) return transformer.circle class Scene(object): def __init__(self, canvas, animated_symbols): self.canvas = canvas self.drawers = self._get_generated_drawers(animated_symbols) @staticmethod def _get_generated_drawers(animated_symbols): drawers = [] for animated_symbol in animated_symbols: figure = animated_symbol.figure animations = animated_symbol.animations if isinstance(figure, Rectangle): drawer = RectangleDrawer(figure, animations) elif isinstance(figure, Circle): drawer = CircleDrawer(figure, animations) else: raise Exception() drawers.append(drawer) return drawers def draw(self, time_spent): self.canvas.delete("all") for drawer in self.drawers: drawer.draw(self.canvas, time_spent) self.canvas.pack() class Timer(object): def __init__(self): self.started_time = None def start(self): self.started_time = self._current_time() def time_spent(self): current_time = self._current_time() return current_time - self.started_time @staticmethod def _current_time(): return int(round(time.time() * 1000)) def scene_loop(window, scene, timer): time_spent = timer.time_spent() scene.draw(time_spent) window.after(TIME_BETWEEN_FRAMES, scene_loop, window, scene, timer) def configure_window_location(window, canvas_width, canvas_height): screen_width = window.winfo_screenwidth() screen_height = window.winfo_screenheight() x = (screen_width / 2) - (canvas_width / 2) y = (screen_height / 2) - (canvas_height / 2) window.geometry('%dx%d+%d+%d' % (canvas_width, canvas_height, x, y)) class AnimatedSymbol(object): def __init__(self, figure, animations): self.figure = figure self.animations = animations class AnimationsParser(object): def parse_animated_symbols(self, file_path): with open(file_path) as f: lines = f.readlines() canvas_width, canvas_height = self._parse_size(lines[0]) symbols_count = int(lines[1]) animated_symbols = [] current = 2 for i in range(symbols_count): figure = self._parse_figure(lines[current]) current += 1 symbol_animations = self._parse_animations(figure, current, lines) current += 1 + len(symbol_animations) animated_symbol = AnimatedSymbol(figure, symbol_animations) animated_symbols.append(animated_symbol) return canvas_width, canvas_height, animated_symbols def _parse_size(self, line): parts = line.split(" ") return int(parts[0]), int(parts[1]) def _parse_animations(self, figure, current, lines): animations = [] animations_count = int(lines[current]) for i in range(animations_count): parts = lines[current + i + 1].split(" ") animation = self._parse_animation(figure, parts) animations.append(animation) return animations def _parse_figure(self, line): parts = line.split(" ") if parts[0] == 'rectangle': center_x = float(parts[1]) center_y = float(parts[2]) width = float(parts[3]) height = float(parts[4]) angle = float(parts[5]) color = parts[6].replace('\n', '') figure = Rectangle(center_x - width / 2, center_y - height / 2, width, height, color, angle) elif parts[0] == 'circle': center_x = float(parts[1]) center_y = float(parts[2]) radius = float(parts[3]) color = parts[4].replace('\n', '') figure = Circle(center_x - radius, center_y - radius, radius, color) else: raise Exception() return figure def _parse_animation(self, figure, parts): if parts[0] == "move": animation = self._parse_move_animation(figure, parts) elif parts[0] == "scale": animation = self._parse_scale_animation(parts) elif parts[0] == "rotate": animation = self._parse_rotate_animation(parts) else: raise Exception() return animation @staticmethod def _parse_move_animation(figure, parts): to_x = float(parts[1]) to_y = float(parts[2]) time = float(parts[3]) cycle = len(parts) >= 5 return MoveAnimation(figure, to_x, to_y, time, cycle) @staticmethod def _parse_scale_animation(parts): destination_scale = float(parts[1]) time = float(parts[2]) cycle = len(parts) >= 4 return ScaleAnimation(destination_scale, time, cycle) @staticmethod def _parse_rotate_animation(parts): rotate_angle = float(parts[1]) time = float(parts[2]) cycle = len(parts) >= 4 return RotateAnimation(rotate_angle, time, cycle) def main(): canvas_width, canvas_height, animated_symbols = \ AnimationsParser().parse_animated_symbols('animation_path.txt') window = tkinter.Tk() configure_window_location(window, canvas_width, canvas_height) canvas = tkinter.Canvas(window, width=canvas_width, height=canvas_height) scene = Scene(canvas, animated_symbols) timer = Timer() timer.start() window.after(TIME_BETWEEN_FRAMES, scene_loop, window, scene, timer) window.mainloop() if __name__ == "__main__": main() 

рд╕реАред рдЯреЗрдЯреНрд░рд┐рд╕ рдмреЙрдЯ

рд▓реЗрдЦрдХ: рджрд┐рдорд┐рддреНрд░реА рдиреЗрд╡реЗрджреЛрдореНрд╕реНрдХреА
рд╕рдордп рд╕реАрдорд╛1 рдПрд╕
рдореЗрдореЛрд░реА рдХреА рд╕реАрдорд╛256 рдПрдордмреА
рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдорд╛рдирдХ рдЗрдирдкреБрдЯ рдпрд╛ input.txt
рдирд┐рд╖реНрдХрд░реНрд╖рдорд╛рдирдХ рдЙрддреНрдкрд╛рджрди рдпрд╛ output.txt
рд╡реНрдпрд╕реНрдд рдЕрд░реНрдХрд╛рджреЗрдИ рдЕрдкрдирд╛ рдЦрд╛рд▓реА рд╕рдордп рд░реЗрдЯреНрд░реЛ рдХрдВрдкреНрдпреВрдЯрд░реЛрдВ рдХреА рд╡рд┐рднрд┐рдиреНрди рдиреАрд▓рд╛рдореА рдореЗрдВ рднрд╛рдЧ рд▓реЗрдирд╛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВред рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдкрд░, рдЙрдиреНрд╣реЛрдВрдиреЗ рдХрдореЛрдбреЛрд░реЛ рдХреЛ рджреЗрдЦрд╛ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЬреАрд╡рди рдХреЛ рджреЗрдЦрд╛ рдерд╛, рдЬрд┐рд╕реЗ рдЦрд░реАрджрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд░рдХрдбреА рдиреЗ рдЬрд▓реНрджрдмрд╛рдЬреА рдХреАред рдФрд░ рдЗрд╕ рдмрд╛рд░ рдЙрдиреНрд╣реЛрдВрдиреЗ рди рдХреЗрд╡рд▓ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХрд╛ рдЕрдзрд┐рдЧреНрд░рд╣рдг рдХрд┐рдпрд╛, рдмрд▓реНрдХрд┐ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рднреА, рдПрдХ рдЖрд╢реНрдЪрд░реНрдп рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдЙрдирдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣рд╛ рдерд╛ - рдкрд┐рдЫрд▓реЗ рдорд╛рд▓рд┐рдХ рджреНрд╡рд╛рд░рд╛ рдЕрдзреВрд░рд╛ рдЯреЗрдЯреНрд░рд┐рд╕ рдерд╛ред рдЕрдиреБрднрд╡ рд╕реЗ, рдЕрд░реНрдХрдбреА рдиреЗ рдЕрдкрдиреЗ рдирд┐рдпрдореЛрдВ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд┐рдпрд╛ред

рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЛ 10 рдХреНрд╖реЗрддреНрд░ рдЪреМрдбрд╝рд╛ рдФрд░ рдЕрд╕реАрдорд┐рдд рдКрдВрдЪрд╛рдИ рдкрд░ рдПрдХ рдЯреЗрдЯреНрд░рд┐рд╕ рдХреНрд╖реЗрддреНрд░ рдХреА рдкреЗрд╢рдХрд╢ рдХреА рдЬрд╛рддреА рд╣реИред рд╕рднреА рдЯреЗрдЯреНрд░рд╛рдорд┐рдиреЛ рдХреА рдПрдХ рд╕реВрдЪреА рдЬрд┐рд╕реЗ рдореИрджрд╛рди рдкрд░ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЯреЗрдЯреНрд░рд╛рдорд┐рдиреЛ рддреБрд░рдВрдд рдЧрд┐рд░ рдЬрд╛рддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреН, рдЙрдирдХреА рд╕реНрдерд┐рддрд┐ рдПрдХ рдмрд╛рд░ рдЗрд╕реА рдЪрд╛рд▓ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ, рдФрд░ рдЧрд┐рд░рдиреЗ рдХреЗ рджреМрд░рд╛рди, рд╕реНрдерд┐рддрд┐ рдФрд░ рд░реЛрдЯреЗрд╢рди рдХреЛ рдмрджрд▓рд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

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

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

рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЕрд░реНрдХрдбреА рдПрдХ рдмрд╣реБрдд рд╡реНрдпрд╕реНрдд рд╡реНрдпрдХреНрддрд┐ рд╣реИред рд▓реЗрдХрд┐рди рд╡рд╣ рдмрд╣реБрдд рдЬреБрдЖ рднреА рд╣реИред рдЙрд╕реЗ рдЗрд╕ рдЦреЗрд▓ рдореЗрдВ рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рдмрдирдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдВред

рдЖрдВрдХрдбрд╝реЛрдВ рдХреА рддрд╛рд▓рд┐рдХрд╛ рдФрд░ рдЙрдирдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рдореЛрдбрд╝

I / O рдкреНрд░рд╛рд░реВрдк, рдЙрджрд╛рд╣рд░рдг рдФрд░ рдиреЛрдЯреНрд╕

рдЗрдирдкреБрдЯ рдкреНрд░рд╛рд░реВрдк


рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╣реИ input1.txt, input2.txt, ..., input10.txtред рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдкреБрд░рд╛рд▓реЗрдЦ ред

рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдореЗрдВ рдПрди (рдПрдиред 100) рдХреА рдПрдХ рд╕рдХрд╛рд░рд╛рддреНрдордХ рд╕рдВрдЦреНрдпрд╛ рд╣реЛрддреА рд╣реИред

рдкреНрд░рддреНрдпреЗрдХ рдмрд╛рдж рдХреА рдкрдВрдХреНрддрд┐ рдореЗрдВ, рд╕реЗрдЯ {'O', 'S', 'Z', 'L', 'J', 'T', 'I'} рд╕реЗ рдПрдХрд▓ рд▓реИрдЯрд┐рди рд╡рд░реНрдг рдкреНрд░рд╕рд╛рд░рд┐рдд рд╣реЛрддрд╛ рд╣реИред

рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рддреАрдХ рдПрдХ рдЯреЗрдЯреНрд░рд╛рдорд┐рдиреЛ рдЖрдХреГрддрд┐ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред

рдЖрдЙрдЯрдкреБрдЯ рд╕реНрд╡рд░реВрдк


рд╕рддреНрдпрд╛рдкрди рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЖрдЙрдЯрдкреБрдЯ рд░реВрдЯ рдХреЗ рд╕рд╛рде рдЗрд╕рдХреЗ рд░реВрдЯ рдореЗрдВ рд╕реНрдерд┐рдд рдЖрдЙрдЯрдкреБрдЯ рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ zip рдЖрд░реНрдХрд╛рдЗрд╡ рдЬрдорд╛ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред output1.txt, output2.txt, ..., output10.txt, рдЬрд╣рд╛рдВ рдЖрдЙрдЯрдкреБрдЯ рдлрд╛рдЗрд▓ outputX.txt рдЗрдирдкреБрдЯ рдлрд╛рдЗрд▓ inputX.txt рдХреЗ рдЕрдиреБрд░реВрдк рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрди рд▓рд╛рдЗрдиреЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рд╕реЗ рдПрдХ рдЯреЗрдЯреНрд░рд╛рдорд┐рдиреЛ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рджреЛ рдирдВрдмрд░ рдП i рдФрд░ рдмреА i рд╢рд╛рдорд┐рд▓ рд╣реИрдВ , рдЬреЛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдЖрдВрдХрдбрд╝реЗ рдХреЗ рд╕рд╛рде рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЗ рдХрджрдо рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ:

1. рдП i рд╕рдмрд╕реЗ рдмрд╛рдИрдВ рдЯреЗрдЯреНрд░рд╛рдорд┐рдиреЛ рддрддреНрд╡ рдХреЗ рдХреЙрд▓рдо рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ (1 тЙд A i indicates 10)ред
2. рдмреА i , рдЯреЗрдЯреНрд░рд╛рдорд┐рдиреЛ рдХреЗ рд░реЛрдЯреЗрд╢рди рдХреА рджрд┐рд╢рд╛ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ (1 тЙд B i indicates 4)ред

рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рдлрд╝рд╛рдЗрд▓ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдирд╣реАрдВ рд╣реИ рдпрд╛ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдмрдирд╛рдИ рдЧрдИ рдереА, рддреЛ рд╕рдВрдмрдВрдзрд┐рдд рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП 0 рдЕрдВрдХ рджрд┐рдП рдЬрд╛рдПрдВрдЧреЗред

рдЙрджрд╛рд╣рд░рдг

рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдирд┐рд╖реНрдХрд░реНрд╖
15
Z
O
L
O
J
S
T
J
Z
J
Z
S
Z
I
O
1 2
9 1
6 4
9 1
3 2
6 1
1 2
4 1
6 2
3 1
8 2
2 2
4 1
10 1
6 1

рдиреЛрдЯ


рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, 4 рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдирд╖реНрдЯ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдХреНрд╖реЗрддреНрд░ рдХреА рдЕрдВрддрд┐рдо рд╕реНрдерд┐рддрд┐:



рддреНрд░реБрдЯрд┐ рдХреЛрдб рдХреА рдЬрд╛рдирдХрд╛рд░реА:

1. рдкреАрдИ - рдПрдХ рдЖрдЙрдЯрдкреБрдЯ рддреНрд░реБрдЯрд┐ рд╣реБрдИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдХреГрддрд┐ рдХрд╛ рдРрд╕рд╛ рдХреЛрдИ рд░реЛрдЯреЗрд╢рди рдирд╣реАрдВ рд╣реИ)
2. WA - рдЖрдВрдХрдбрд╝реЗ рдХреЗ рд░реЛрдЯреЗрд╢рди рдФрд░ рд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рджреА рдЧрдИ рдереА, рд▓реЗрдХрд┐рди рдпрд╣ рд╡реНрдпрд╡рд╕реНрдерд╛ рдХреНрд╖реЗрддреНрд░ рдХреА рд╕реАрдорд╛рдУрдВ рд╕реЗ рдкрд░реЗ рд╣реИред
3. рдЯреАрдПрд▓, рдПрдордПрд▓, рдУрдХреЗ, рдЖрд░рдИ - рдЗрди рдХреЛрдбреЛрдВ рдХрд╛ рд╡рд╣реА рдЕрд░реНрде рд╣реИ рдЬреЛ рдпрд╛рдВрдбреЗрдХреНрд╕.рдХреЙрдиреНрдЯреЗрд╕реНрдЯ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдирд┐рдпрдореЛрдВ рдореЗрдВ рд╣реИред

рдЪреВрдВрдХрд┐ рд╕рдорд╕реНрдпрд╛ рдПрдирдкреА-рдкреВрд░реНрдг рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕рдорд╛рдзрд╛рди рдХреЛ рдЧрдгрд┐рддреАрдп рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдЗрд╖реНрдЯрддрдо рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдирд┐рд░реНрдгрдп рдХреА рдкреНрд░рднрд╛рд╡рд╢реАрд▓рддрд╛ рд╕реНрдХреЛрд░ рдХрд┐рдП рдЧрдП рдЕрдВрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реЛрддреА рд╣реИред

рдирд┐рд░реНрдгрдп


рдпрд╣ рдПрдХ рдЦреБрд▓рд╛ рдкрд░реАрдХреНрд╖рдг рдХрд╛рд░реНрдп рд╣реИред рдЖрдЗрдП рдЬрд╛рдиреЗрдВ рдХрд┐ рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИред

рдкреНрд░рддрд┐рднрд╛рдЧреА рдЕрдкрдиреЗ рдирд┐рдкрдЯрд╛рди рдореЗрдВ рдПрдХ рдЬрд╝рд┐рдк рд╕рдВрдЧреНрд░рд╣ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдореВрд▓ рдореЗрдВ рдЯреЗрдХреНрд╕реНрдЯ рдлрд╛рдЗрд▓реЗрдВ input1.txt, input2.txt, ..., input10.txt рд╣реИрдВред рдПрдХ рдлрд╝рд╛рдЗрд▓ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреЗрдЯреНрд░рд╛рдорд┐рдиреЛ рдЖрдВрдХрдбрд╝реЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИред рдкреНрд░рддрд┐рднрд╛рдЧреА рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ, рдПрдХ рдЙрддреНрдкрдиреНрди рдЬрд╝рд┐рдк рд╕рдВрдЧреНрд░рд╣ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╣реИ, рдЬрд┐рд╕рдХреЗ рдореВрд▓ рдореЗрдВ output1.txt, output2.txt, ..., output10.txt рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЙрд╕реА рдХреНрд░рдо рдореЗрдВ рдЯреБрдХрдбрд╝реЛрдВ рджреНрд╡рд╛рд░рд╛ рдЪрд╛рд▓ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕рдореЗрдВ рд╡реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕реЗрдЯ рдХреА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИрдВред

рдХрд╛рд░реНрдп рдПрдирдкреА-рдкреВрд░реНрдг рд╣реИ рдФрд░ рдПрдХ рд╕реМ рдкреНрд░рддрд┐рд╢рдд рд╕рдорд╛рдзрд╛рди рдХреЗрд╡рд▓ рд╕рдВрдкреВрд░реНрдг рдЦреЛрдЬ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЖрдВрдХрдбрд╝реЛрдВ рдХреА рдмрдврд╝рддреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рдЬрдЯрд┐рд▓рддрд╛ рддреЗрдЬреА рд╕реЗ рдмрдврд╝рддреА рд╣реИред рдЪреВрдВрдХрд┐ рдпрд╣ рд╕рдорд╛рдзрд╛рди рдХреЛрдб рд╕реМрдВрдкрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореЗрдореЛрд░реА рдФрд░ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдореЗрдВ рдЗрд╕ рдкрд░ рдХреЛрдИ рдкреНрд░рддрд┐рдмрдВрдз рдирд╣реАрдВ рд╣реИред

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

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

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

1. рд╣рдо рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ "рд╣рд╛рде" рдЦреЗрд▓рддреЗ рд╣реИрдВ, рд╣рд▓ рдореЗрдВ рдиреАрдЪреЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВред
2. рд╣рдо рдПрдХ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝рд░ рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдФрд░ "рд╣рд╛рде" рдЦреЗрд▓рддреЗ рд╣реИрдВ, рд╕рдорд╛рдзрд╛рди рдореЗрдВ рдЪрд╛рд▓реЗрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВред
3. рд▓рд╛рд▓рдЪреА рдПрд▓реНрдЧреЛрд░рд┐рдереНрдоред рдкреНрд░рддреНрдпреЗрдХ рдореЛрдбрд╝ рдкрд░, рд╣рдо рдЯреБрдХрдбрд╝реЗ рдХреЛ рдбрд╛рд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдирд╖реНрдЯ рдХреА рдЧрдИ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЕрдзрд┐рдХрддрдо рд╣реЛред рдпрджрд┐ рдРрд╕реЗ рдХрдИ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ, рддреЛ рдЙрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдХреЛ рднреА рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗ рдЪреБрдиреЗрдВред
4. рдкреИрд░рд╛рдЧреНрд░рд╛рдл 3 рдХреЗ рд╕рдорд╛рди рд╣реА рд▓рд╛рд▓рдЪреА рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо, рдХреЗрд╡рд▓ рдпрд╣ рдПрдХ рдЖрдВрдХрдбрд╝рд╛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рд╕рдлрд▓рддрд╛ рдХреА рдЬрд╛рдБрдЪ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдВрдХрдбрд╝реЛрдВ рдХреЗ рдПрдХ рд╕рдореВрд╣ рдХреА рд╕рдВрдкреВрд░реНрдг рдЦреЛрдЬ рдХреА рд╕рдлрд▓рддрд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкрд╛рдВрдЪ рдЖрдВрдХрдбрд╝реЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣)ред
5. рдЖрдиреБрд╡рдВрд╢рд┐рдХ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдоред рд╣рдо рдлрд┐рдЯрдиреЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рди рдХреЗрд╡рд▓ рдЯреВрдЯреА рд╣реБрдИ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рд▓рд╛рд▓рдЪреА рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдореЗрдВ, рдмрд▓реНрдХрд┐ рдХреНрд╖реЗрддреНрд░ рдХреЗ "рд░рд╛рд╣рдд" рдХреА рдЪрд┐рдХрдирд╛рдИ рдФрд░, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдВрдХрдбрд╝реЛрдВ рдХреЗ рдмреАрдЪ рдореБрдХреНрдд рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдХреА рд╕рдВрдЦреНрдпрд╛ред

рдбреА рдФрд░ рдИред рдХреНрд╡реЗрд╕реНрдЯ

рд▓реЗрдЦрдХ: рдЗрд▓рд┐рдорджрд╛рд░ рдЕрднрд┐рд▓рд╛рд╡ рдФрд░ рдЗрд▓реНрдпрд╛ рдХреБрдЯрд┐рдПрд╡

рдореАрд╢рд╛ рдЦреЛрдЬ рдХреА рд╢реИрд▓реА рдореЗрдВ рдПрдХ рдореЛрдмрд╛рдЗрд▓ рдЧреЗрдо рдмрдирд╛рддреА рд╣реИред рдЙрдиреНрд╣реЛрдВрдиреЗ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдЦреЗрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдЗрдВрдЬрди рдХреЗ рд╕рд╛рде рдПрдХ рддреИрдпрд╛рд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмрдирд╛рдИ рдФрд░ рдЙрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛рдпрд╛ред рдореАрд╢рд╛ рдЦреЗрд▓ рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреА рдЬрд▓реНрджреА рдореЗрдВ рд╣реИ рдФрд░ рд╡рд┐рдХрд╛рд╕ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреМрд░рд╛рди рдХрдИ рдЧрд▓рддрд┐рдпрд╛рдБ рдХреА рд╣реИред рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рд╕рдордп рдкрд░ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореАрд╢рд╛ рдиреЗ рдЖрдкрд╕реЗ рдорджрдж рдорд╛рдВрдЧреАред рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ, рд╕рдВрдХрд▓рди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдареАрдХ рдХрд░реЗрдВ, рдХреНрд░реИрд╢ рдФрд░ рдЗрд╕рдореЗрдВ рддрд╛рд░реНрдХрд┐рдХ рддреНрд░реБрдЯрд┐рдпрд╛рдБред ┬л┬╗, . .

: Android , iOS . тАФ ( 255 ).

Android


1) .

2) , IDE.

  1. final mBackButton mTitleTextView, .
  2. mTitleTextView mBackButton , , .
  3. тАФ Layout ViewGroup.
  4. okButton getTextTaskControlsLayout.
  5. IDE , ┬л┬╗ ┬л┬╗ .

3) . ds , ┬лjava.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity┬╗. .

4) .

  • тАФ java.lang.IndexOutOfBoundsException.
  • : Layout Layout. .
  • 1.1 ( ).

5) .

  • , .
  • ( , , ).
  • . :
    тАФ Layout.
    тАФ .
  • .

6) . тАФ .

7) ┬л┬╗.

  • android.content.res.Resources$NotFoundException.
  • . , ID .
  • .

! .

iOS


. :



, Optional<Optional<Step>>. guard let Optional . Optional, flatMap({ $0 }), .



, .



, QuestCore . :



, тАФ goLeft, goRight . , goRight .



, : TestView, firstResponder . , TestView firstResponder. , UIKit.



┬л┬╗. IBOutlet, , . .







, 2018 .

Source: https://habr.com/ru/post/hi482210/


All Articles