0655 - Transf

From Bitnami MediaWiki

Cerința[edit | edit source]

Se dau două șiruri a și b cu câte n elemente, numere naturale din mulțimea {1,2}. Se dorește transformarea șirului a în șirul b, având la dispoziție următoarele operații:

  • interschimbarea a două elemente
  • înlocuirea unui element 1 cu 2 sau a unui element 2 cu 1.

Determinați pentru cele două șiruri numărul minim de operații prin care se transformă șirul a în șirul b.

Date de intrare[edit | edit source]

Programul citește de la tastatură numărul n, apoi cele n elemente ale șirului a, apoi cele n elemente ale șirului b.

Date de ieșire[edit | edit source]

Programul va afișa pe ecran numărul minim ce operații C.

Restricții și precizări[edit | edit source]

  • 1 ≤ n ≤ 1000

Exemplul 1[edit | edit source]

Input:

5

2 2 1 1 2

2 2 2 1 1

Output:

1

Explicație:

Prin interschimbarea în primul șir a elementului de pe poziția 3 cu cel de pe poziția 5 se obține al doilea șir.

Exemplul 2[edit | edit source]

Input:

999999999999

Output:

Conditii neindeplinite

Rezolvare[edit | edit source]

<syntaxhighlight lang="python3" line="1"> def ver(n):

   if not (1<=n<=1000):
       print("Conditii neindeplinite")
       exit()

n = int(input()) ver(n) a = list(map(int, input().split())) b = list(map(int, input().split()))

cnt1 = 0 cnt2 = 0

for i in range(1, n + 1):

   if a[i - 1] != b[i - 1]:
       if a[i - 1] == 1:
           cnt1 += 1
       else:
           cnt2 += 1

result = max(cnt1, cnt2) print(result)

</syntaxhighlight>