set

Ենթադրենք՝ շատ հաճախորդներ ունեք՝ աշխարհի տարբեր քաղաքներից: Դուք ձեզ մոտ նշում եք, թե որ քաղաքից են նրանք։ Քաղաքների այդ ցանկը կարող է լինել այսպիսին՝ ['San Francisco', 'New York', 'Yerevan', 'New York', 'Tel Aviv', ...].
Պատահում է, որ որոշ հաճախորդներ նույն քաղաքից են, օրինակ՝ New York-ից: Սակայն դուք ցանկանում եք պարզել, թե որ քաղաքներն են, որոնք չեն կրկնվում ցանկում:
Սա հեշտ է անել Python-ի set-ով.
cities = ['San Francisco', 'New York', 'Yerevan', 'New York', 'Tel Aviv', 
					'San Diego', 'San Francisco', 'Yerevan']
uniques = set(cities)
print(uniques)
# {'San Diego', 'Yerevan', 'San Francisco', 'New York', 'Tel Aviv'}

print(len(cities))     # 8
print(len(uniques))    # 5
set-ը չկարգավորված տարրերի հավաքածու է, որտեղ կրկնվող տարրեր չկան: Այն ցույց է տալիս տարրերի առկայությունը և չունի հատուկ կարգ կամ հերթականություն: set-ը՝ որպես տարրերի հավաքածու, նման է զանգվածին կամ tuple-ին, սակայն այստեղ չկա որոշակի կարգ, և տարրերը չեն կրկնվում։
 
Մենք կարող ենք ստուգել՝ արդյոք տարրը set-ի մեջ առկա է, թե ոչ՝ կիրառելով in օպերատորը.
print('San Francisco' in uniques)   # True
print('Tel Aviv' in uniques)        # True
print('London' in uniques)          # False
print('Amsterdam' in uniques)       # False
print(3 in uniques)                 # False
Շատ ավելի արագ է ստուգել, թե արդյոք որոշակի տարր առկա է set-ում, քան նույնը ստուգել զանգվածի դեպքում: Սա պայմանավորված է set-ի տվյալների կառուցվածքով: Զանգվածների դեպքում Python-ը պետք է մեկ առ մեկ համեմատի տարրերը՝ ցուցակի առաջին տարրից մինչև վերջինը, և վերադարձնի True, եթե փնտրվող տարրն առկա է, իսկ հակառակ դեպքում՝ False: Այսպիսով, ստուգումը կատարելու համար այն անցնում է ամբողջ ցանկի վրայով՝ մեկ առ մեկ: set-ի կառուցվածքը թույլ է տալիս այս ստուգումը կատարել՝ կիրառելով ավելի պակաս թվով գործողություններ:

Առաջադրանք

Դուք օգնում եք մթերային խանութին գույքագրում կատարել: Յուրաքանչյուր ապրանքի համար նրանք նշել են այդ ապրանքը մատակարարող ընկերության անվանումը։ Նրանք ցանկանում են հաղորդագրություն ուղարկել այդ ընկերություններին` ասելով, թե որ ապրանքից որքան անհրաժեշտ կլինի առաջիկա մեկ ամսվա ընթացքում: Որոշ ընկերություններ մատակարարում են մի քանի ապրանք, ուստի խանութը չի ցանկանում նույն ընկերությանը տարբեր հաղորդագրություններ ուղարկել՝ ամեն ապրանքի համար առանձին-առանձին: Փոխարենը, նրանք ցանկանում են ունենալ այն ընկերությունների ցանկը, որոնց հետ աշխատում են, որպեսզի կարողանան նրանց հաղորդագրություն ուղարկել: Նրանք ձեզ խնդրում են գրել ծրագիր, որը կտպի բոլոր այն ընկերությունների անվանումները, որոնց հետ համագործակցում է մթերային խանութը:
Մուտքի առաջին տողը պարունակում է մեկ ամբողջ թիվ՝ n (ապրանքների քանակը): Հաջորդ n տողերում նշված է, թե որ ընկերությունն է մատակարարում տվյալ ապրանքը։
Ծրագիրը պետք է տպի ընկերությունների ցանկը՝ առանց կրկնվող անունների։ Յուրաքանչյուր անունը պետք է լինի առանձին տողում:
Մուտք
Ելք
5 Nestle Mars Nestle Coca Cola Nestle
Nestle Mars Coca Cola
 

Constraints

Time limit: 2 seconds

Memory limit: 512 MB

Output limit: 1 MB

To check your solution you need to sign in
Sign in to continue