Problemi 20

Kërkesa

Para se të fillojë mësimi mësuesi bën apelin, duke i thirrur emrat e nxënësve një nga një. Nqs dy nxënës kanë të njëjtin emër (por mbiemra të ndryshëm) atere mësuesi e thërret emrin të plotë, me emër dhe mbiemër. Përndryshe thërret vetëm emrin (pa mbiemër).

Bëni një program që merr emrat e nxënësve dhe nxjerr se si i thërret mësuesi ata.

Referenca: https://www.codechef.com/LTIME71B/problems/ATTND

Shembull

$ cat input.txt
1
4
hasan jaddouh
farhod khakimiyon
kerim kochekov
hasan khateeb

$ python3 prog.py < input.txt
hasan jaddouh
farhod
kerim
hasan khateeb

Kemi 1 rast testimi, i cili ka 4 emra.

Zgjidhja 1

for _ in range(int(input())):
    n = int(input())
    L = []
    F = []
    for i in range(n):
        first, last = input().split()
        L.append([first, last])
        F.append(first)
    for name in L:
        first, last = name
        if F.count(first) > 1:
            print(first, last)
        else:
            print(first)

Koha e rendit \(O(N^2)\)

Zgjidhja 2

for _ in range(int(input())):
    n = int(input())
    L = []
    F = {}
    for i in range(n):
        first, last = input().split()
        L.append([first, last])
        F[first] = F.get(first, 0) + 1
    for name in L:
        first, last = name
        if F[first] > 1:
            print(first, last)
        else:
            print(first)

Koha e rendit \(O(N*log(N))\)