Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Задание 27
- 1) 2 задачи (2 балла, 4 балла)
- 2 балла - сохранить весь вход в один большой
- массив и перебрать (много вложенных циклов)
- 4 балла
- - нельзя хранить всё в массиве
- (! но сами массивы не запрещены, главное, чтобы
- их длина не зависела от входа)
- - 1 Кб = 256 int (10 переменных + int[200])
- - O(N)
- Нельзя:
- for i in range(N):
- for j in range(N):
- for i in range(N):
- for j in range(i+1, N):
- a = list(map(int, input().split())
- a = [int(x) for x in input().split()]
- перебор
- N = int(input())
- a = []
- for i in range(N):
- a.append(int(input()))
- # объявить константы
- for i in range(N):
- for j in range(i + 1, N):
- a[i] a[j]
- # минимальная чётная сумма
- N = int(input())
- m1 = 30001 # неч
- m0 = 30001 # чет
- min_s = 60001
- for i in range(N):
- x = int(input())
- if x % 2 == 0:
- if (x + m0) < min_s:
- min_s = x + m0
- if x < m0:
- m0 = x
- else:
- if (x + m1) < min_s:
- min_s = x + m1
- if x < m1:
- m1 = x
- print(min_s)
- # минимальное чётное произведение
- N = int(input())
- m0 = 30001 # чет
- min_prod = 60001
- for i in range(N):
- x = int(input())
- if (x * m0) < min_prod:
- min_prod = x * m0
- if x % 2 == 0 and x < m0:
- m0 = x
- print(min_prod)
- # минимальная сумма кратная 3
- N = int(input())
- m2 = 30001
- m1 = 30001
- m0 = 30001
- min_s = 60001
- for i in range(N):
- x = int(input())
- if x % 3 == 0:
- if (x + m0) < min_s:
- min_s = x + m0
- if x < m0:
- m0 = x
- elif x % 3 == 1:
- if (x + m2) < min_s:
- min_s = x + m2
- if x < m1:
- m1 = x
- else:
- if (x + m1) < min_s:
- min_s = x + m1
- if x < m2:
- m1 = x
- print(min_s)
- # минимальная сумма кратная 123
- N = int(input())
- m = [30001] * 123
- min_s = 60001
- for i in range(N):
- x = int(input())
- # x % 123 = 1 -> x[122]
- # x % 123 = 2 -> x[121]
- # x % 123 = 3 -> x[120]
- # ...
- # x % 123 = k -> x[123 - k]
- # x % 123 = 0 -> x[123 - 0] = x[123]% 123 = x[0]
- if (x + m[(123 - x % 123) % 123]) < min_s:
- min_s = x + m[(123 - x % 123) % 123]
- if x < m[x % 123]:
- m[x % 123] = x
- print(min_s)
- # разница в идексах не менее 5
- N = int(input())
- a = []
- for i in range(N):
- a.append(int(input()))
- min = 60001
- for i in range(N):
- for j in range(i + 5, N):
- s = a[i] + a[j]
- if s % 2 == 0 and s < min:
- min = s
- print(min)
- # очередь + минимальная чётная сумма
- N = int(input())
- m1 = 30001 # неч
- m0 = 30001 # чет
- min_s = 60001
- q = []
- for i in range(4):
- q.append(int(input()))
- for i in range(N - 4):
- x = int(input())
- if x % 2 == 0:
- if (x + m0) < min_s:
- min_s = x + m0
- else:
- if (x + m1) < min_s:
- min_s = x + m1
- if q[0] % 2 == 0 and q[0] < m0:
- m0 = q[0]
- if q[0] % 2 == 1 and q[0] < m1:
- m1 = q[0]
- # 1
- # q = q[1:] + [x]
- # 2
- # q.pop(0)
- # q.append(x)
- # 3
- # for i in range(3):
- # q[i] = q[i + 1]
- # q[3] = x
- print(min_s)
Add Comment
Please, Sign In to add comment