Advertisement
radmickey

Untitled

Jun 18th, 2022
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.25 KB | None | 0 0
  1. def g(a, x):
  2.     pref_a = [0] * len(a)
  3.     pref_a[0] = a[0]
  4.    
  5.     for i in range(1, len(a)):
  6.         pref_a[i] = pref_a[i-1] + a[i]
  7.    
  8.     ans = 10**100
  9. ##    print(len(a))
  10.     for i in range(len(a)):
  11.         if pref_a[i] == x:
  12.             ans = min(ans, i + 1)
  13.         for j in range(i + 1, len(a)):
  14.             s = pref_a[j] - pref_a[i]
  15.             #print(i, j, s)
  16.             if s > x:
  17.                 break
  18.             if s == x:
  19.                 ans = min(ans, j - i)
  20.     return ans
  21.  
  22. f = open('27-111b.txt')
  23. n, x = [int(i) for i in f.readline().split()] # n - кол-во емкостей
  24.                                               # x - наша цель!
  25. a = [int(i) for i in f.read().split()]
  26.  
  27. ##n, x = 7, 18
  28. ##a = [37, 5, 22, 3, 10, 5, 3, 21, 15, 28]
  29.  
  30. a_new = []
  31. tmp = []
  32. ans = 10**100
  33. for i in range(len(a)):
  34.     if a[i] == x:
  35.         ans = 1
  36.     elif a[i] < x:
  37.         tmp.append(a[i])
  38.     elif a[i] > x:
  39.         if tmp != []:
  40.             a_new.append(tmp)
  41.             tmp = []
  42. ##if tmp != []:
  43. a_new.append(tmp)
  44. tmp = []
  45.  
  46. if len(a_new) > 1:
  47.     a_new[0] = a_new[-1] + a_new[0]
  48.     a_new = a_new[:len(a_new) - 1]
  49.  
  50.  
  51. if ans != 1:
  52.     for i in a_new:
  53.         r = g(i, x)
  54.         ans =  min(ans, r)
  55. print(ans)
  56.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement