Глеб обожает шоппинг. Как-то раз он загорелся идеей подобрать себе майку и штаны так, чтобы выглядеть в них максимально стильно. В понимании Глеба стильность одежды тем больше, чем меньше разница в цвете элементов его одежды.
В наличии имеется N (1 ≤ N ≤ 100 000) маек и M (1 ≤ M ≤ 100 000) штанов, про каждый элемент известен его цвет (целое число от 1 до 10 000 000). Помогите Глебу выбрать одну майку и одни штаны так, чтобы разница в их цвете была как можно меньше.
Входные данные
Сначала вводится информация о майках: в первой строке целое число N (1 ≤ N ≤ 100 000) и во второй N целых чисел от 1 до 10 000 000 — цвета имеющихся в наличии маек. Гарантируется, что номера цветов идут в возрастающем порядке (в частности, цвета никаких двух маек не совпадают).
Далее в том же формате идёт описание штанов: их количество M (1 ≤ M ≤ 100 000) и в следующей строке M целых чисел от 1 до 10 000 000 в возрастающем порядке — цвета штанов.
Выходные данные
Выведите пару неотрицательных чисел — цвет майки и цвет штанов, которые следует выбрать Глебу. Если вариантов выбора несколько, выведите любой из них.
Другие языки программирования и технологии
решение задачи на python, c++, java
ну просто 4 вложенных цикла, 2 если использовать форич, запоминаешь миниум и оба числа в конце выводишь
int min=10000000;
for (int i1=1; i1<=N; i1++) for (int i2=1; i2<=N; i2++) for (int i3=1; i3<=M; i3++) for (int i4=1; i4<=M; i4++)
if (abs(майки [i1][i2] - штаны [i3][i4]) < min) {m=майки [i1][i2]; n=штаны [i3][i4]; min=abs(майки [i1][i2] - штаны [i3][i4]);};
int min=10000000;
for (int i1=1; i1<=N; i1++) for (int i2=1; i2<=N; i2++) for (int i3=1; i3<=M; i3++) for (int i4=1; i4<=M; i4++)
if (abs(майки [i1][i2] - штаны [i3][i4]) < min) {m=майки [i1][i2]; n=штаны [i3][i4]; min=abs(майки [i1][i2] - штаны [i3][i4]);};
#Python:
N=int(input("N=?\b"));print("> ",end='')
n=input().split(' ')
n=[int(n[k]) for k in range(N)]
M=int(input("M=?\b"));print("> ", end='')
m=input().split(' ')
m=[int(m[k]) for k in range(M)]
min=1000000000
for k in range(N):
..for l in range(M):
....r=abs(n[k]-m[l])
....if r<min:
..~~..min=r;mink=k;minl=l
print(n[mink],m[mink])
# N- количество фасонов маек, n- список маечных цветов длины N, M- количество фасонов штанов, m- список их цветов длины M, а .. и ~~ это пробелы!
N=int(input("N=?\b"));print("> ",end='')
n=input().split(' ')
n=[int(n[k]) for k in range(N)]
M=int(input("M=?\b"));print("> ", end='')
m=input().split(' ')
m=[int(m[k]) for k in range(M)]
min=1000000000
for k in range(N):
..for l in range(M):
....r=abs(n[k]-m[l])
....if r<min:
..~~..min=r;mink=k;minl=l
print(n[mink],m[mink])
# N- количество фасонов маек, n- список маечных цветов длины N, M- количество фасонов штанов, m- список их цветов длины M, а .. и ~~ это пробелы!
Denis Melnicin
print(n[mink],m[minl])
так, как входные данные уже упорядочены, то:
#include <iostream>
#include <vector>
int main() {
// вводим данные
size_t N, M;
std::cin >> N;
std::vector v1(N);
for(size_t i =0; i < N; i++){
std::cin >> v1[i];
}
std::cin >> M;
std::vector v2(M);
for(size_t i =0; i < N; i++){
std::cin >> v2[i];
}
// само решение
struct {
int diff;
size_t idx1, idx2;
} m = {10000000, 0, 0}; // минимум
size_t i1 = 0, i2 = 0; // индексы
while (i1 < M && i2 < N) {
if (abs(v1[i1] - v2[i2]) < m.diff)
m = { abs(v1[i1] - v2[i2]), i1, i2 };
(v1[i1] < v2[i2]) ? ++i1 : ++i2;
}
std::cout << m.idx1 << " " << m.idx2;
return 0;
}
#include <iostream>
#include <vector>
int main() {
// вводим данные
size_t N, M;
std::cin >> N;
std::vector v1(N);
for(size_t i =0; i < N; i++){
std::cin >> v1[i];
}
std::cin >> M;
std::vector v2(M);
for(size_t i =0; i < N; i++){
std::cin >> v2[i];
}
// само решение
struct {
int diff;
size_t idx1, idx2;
} m = {10000000, 0, 0}; // минимум
size_t i1 = 0, i2 = 0; // индексы
while (i1 < M && i2 < N) {
if (abs(v1[i1] - v2[i2]) < m.diff)
m = { abs(v1[i1] - v2[i2]), i1, i2 };
(v1[i1] < v2[i2]) ? ++i1 : ++i2;
}
std::cout << m.idx1 << " " << m.idx2;
return 0;
}
Похожие вопросы
- Помогите пожалуйста оптимизировать решение задачи (Зайчик) на C++
- Возможно ли программировать на Pascal, C, C++, C#, Java, Prolog, Ruby, Python, HTML, XML, SQL, UML в MacOS?
- С чего начать изучение? C, C++, Java, Python, PHP, Perl, Lisp, HTML5, CSS3, JavaScript, MySQL, Adobe Flash
- Какой из этих яп легче для изучения (C++/Java/C#/Python/PHP/JavaScript)
- Что лучше учить? Разработка сайтов? HTML/CSS/PHP или все же разработку приложений? C++/Java/Python ???
- Почему до сих пор кто-то учит C, Java, C++ и JavaScript?
- Помогите с решением задачи на C++
- Как в C++ разбить число на цифры и вывести их через пробел? Решение задачи реализовать с помощью конструкции switch.
- Необходима помощь в решении задачи. C++
- Недавно начал изучать программирование (не с полного нуля), но мои решения задач слишком громоздкое, это нормально?