Advertisement
simushin_pavel

Untitled

Dec 6th, 2020
578
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.61 KB | None | 0 0
  1. def eval(data):
  2.     st=set(data[1])
  3.     need=data[1]
  4.     lst=data[0]
  5.     ans=[]
  6.     stlst=[]
  7.     for i in range(len(lst)):
  8.         stlst.append(set(lst[i][1]))
  9.         stlst[i]=stlst[i]&st
  10.     while(len(need)):
  11.         mx=[lst[0][0], 0]
  12.         while mx[1]<len(need) and (need[mx[1]] in stlst[0]):
  13.             mx[1]+=1
  14.         for i in range(1, len(lst)):
  15.             cur=[lst[i][0], 0]
  16.             while cur[1]<len(need) and(need[cur[1]] in stlst[i]):
  17.                 cur[1]+=1
  18.             if cur[1]>mx[1]:
  19.                 mx=cur
  20.         need=need[mx[1]:]
  21.         ans+=mx[0]*mx[1]
  22.     return ans
  23. data=([('Антон', ['строить крыльцо', 'ставить окна', 'рубить']), ('Егор', ['таскать', 'вешать люстру', 'красить', 'строить крыльцо']), ('Саша', ['лакировать', 'вешать шторы', 'сверлить']), ('Леша', ['закупать материалы', 'рубить', 'пилить', 'таскать', 'ставить окна']), ('Женя', ['вешать шторы', 'сверлить', 'таскать', 'лакировать']), ('Витя', ['закупать материалы', 'строить крыльцо', 'сверлить', 'пилить', 'укладывать пол', 'лакировать']), ('Коля', ['носить', 'вытачивать', 'красить', 'таскать', 'ставить окна'])], ['закупать материалы', 'пилить', 'пилить', 'сверлить', 'рубить', 'пилить', 'красить', 'носить', 'пилить'])
  24. print(eval(data))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement