Advertisement
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 (int i=0; i < N; i++)
- for (int j=i+1; j < N; j++)
- перебор
- cin >> N
- int a[10000]
- for (int i=0; i < N; i++)
- cin >> a[i]
- # объявить константы
- for (int i=0; i < N; i++)
- for (int j=i+1; j < N; j++)
- a[i] a[j]
- # минимальная чётная сумма
- cin >> n
- m1 = 30001 # неч
- m0 = 30001 # чет
- min_s = 60001
- for (int i=0; i < N; i++) {
- cin >> x;
- 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;
- }
- }
- cout << min_s;
- # минимальное чётное произведение
- # минимальная сумма кратная 3
- cin >> n
- m2 = 30001
- m1 = 30001
- m0 = 30001
- min_s = 60001
- for (int i=0; i < N; i++) {
- cin >> x;
- if (x % 3 == 0) {
- if ((x + m0) < min_s)
- min_s = x + m0;
- if (x < m0)
- m0 = x;
- } else if (x % 3 == 1){
- if ((x + m2) < min_s)
- min_s = x + m1;
- if (x < m1)
- m1 = x;
- } else {
- if ((x + m1) < min_s)
- min_s = x + m1;
- if (x < m2)
- m1 = x;
- }
- cout << min_s;
- # минимальная сумма кратная 123
- N = int(input())
- int m[123];
- for (int i=0; i < 123; i++)
- m[i] = 30001;
- min_s = 60001;
- for (int i=0; i < N; i++) {
- cin >> x;
- # 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;
- }
- cout << min_s;
- # разница в идексах не менее 5
- m = 60001
- cin >> N
- int a[10000]
- for (int i=0; i < N; i++)
- cin >> a[i]
- for (int i=0; i < N; i++) {
- for (int j=i+1; j < N; j++) {
- s = a[i] + a[j]
- if (s % 2 == 0 && s < min)
- m = s
- }
- }
- ciut << m;
- # очередь + минимальная чётная сумма
- cin >> n
- m1 = 30001
- m0 = 30001
- min_s = 60001
- int q[4]
- for (int i=0; i < 4; i++)
- cin >> q[i];
- for (int i=4; i < N; i++){
- 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 && q[0] < m0)
- m0 = q[0];
- if (q[0] % 2 == 1 && q[0] < m1)
- m1 = q[0];
- for (int j=0; i < 3; i++)
- q[i] = q[i + 1];
- q[3] = x;
- }
- cout << min_s
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement