Editorial for 2162: Таємниця


Remember to use this editorial only when stuck, and not to copy-paste code from it. Please be respectful to the problem author and editorialist.
Submitting an official solution before solving the problem yourself is a bannable offence.

Автор, розробник, автор розбору: Iлля Пермяков

Побачимо, що суму усiх чисел в матрицi можна виразити як ~r_1 + r_2~, або ~c_1 + c_2~. Якщо цi двi суми не збiгаються, то вiдповiдi не iснує, в iншому випадку можна завжди побудувати вiдповiдь наступним чином:

Нехай ~x = T_{1,1}~. Тодi:

  • ~T_{1,2} = r_1-x~.
  • ~T_{2,1} = c_1-x~.
  • ~T_{2,2} = r_2-T_{2,1} = r_2-c_1 + x~.

Для того щоб усi елементи були невiд'ємними, має виконуватись наступне:

  • ~T_{1,1} ⩾ 0 ⇒x ⩾ 0~.
  • ~T_{1,2} ⩾ 0 ⇒r_1-x ⩾ 0~.
  • ~T_{2,1} ⩾ 0 ⇒c_1-x ⩾ 0~.
  • ~T_{2,2} ⩾ 0 ⇒r_2-c_1 + x ⩾ 0~.

Звiдси видно, що для вiдновлення рiшення, можна встановити ~x = min(r_1, c_1, r_2-c_1)~, а потiм, за допомогою x, вiдновити усi iншi елементи матрицi.

r1, r2 = map(int, input().split())
c1, c2 = map(int, input().split())

if r1 + r2 != c1 + c2:
    print("No")
    exit()

L = max(0, r1 - c2, c1 - r2)
U = min(r1, c1)

a = L
b = r1 - a
c = c1 - a
d = r2 - c

print("Yes")
print(a, b)
print(c, d)

Коментарі

Please read the guidelines before commenting.


Ще немає коментарів.