0655 - Transf
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
cu2
sau a unui element2
cu1
.
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>