Algorithm
Problem Name: 2 AD-HOC - beecrowd | 2422
Problem Link: https://www.beecrowd.com.br/judge/en/problems/view/2422
Soma das Casas
Por OBI - Olimpíada Brasileira de Informática 2012 Brazil
Timelimit: 1
Joãozinho mora em uma rua que tem N casas. Marquinhos é o melhor amigo dele, mas sempre gosta de pregar peças em Joãozinho. Desta vez, ele pegou os dois brinquedos prediletos de Joãozinho e os escondeu em duas casas distintas da rua. Em compensação, Marquinhos deu uma dica importante para Joãozinho:
A soma dos números das casas em que escondi teus brinquedos é igual a K. Além disso, escolhi as casas de tal forma que não existe outro par de casas cuja soma tenha esse mesmo valor.
Sabendo disto, encontre qual é o par de casas em que se encontram os brinquedos de Joãozinho. Para auxiliar seu amigo, Marquinhos entregou a Joãozinho uma lista com o número das casas já em ordem crescente (isto é, do menor para o maior número).
Entrada
A primeira primeira linha da entrada contém um número inteiro N (2 ≤ N ≤ 105), que representa o número de casas que existem na rua. Cada uma das N linhas seguintes contém um número inteiro, representando o número de uma casa (Para cada casa Ci , 0 ≤ Ci ≤ 109 , i = 1, 2, . . . , N). Note que esses N números estão ordenados, do menor para o maior. A última linha da entrada contém um inteiro K, que é a soma dos números das duas casas onde os brinquedos estão escondidos , (os números das casas estão em ordem crescente, do menor para o maior número, e casas distintas têm números distintos).
Saída
Seu programa deve imprimir uma única linha, contendo dois inteiros, A e B, A < B, que representam os números das casas em que estão escondidos os brinquedos. Os dois números devem ser separados por um espaço em branco.
Exemplos de Entrada | Exemplos de Saída |
4 1 2 3 5 8 |
3 5 |
Code Examples
#1 Code Example with C++ Programming
Code -
C++ Programming
#include <iostream>
#include <set>
using namespace std;
int main() {
set < int> casa;
int n, i, valor;
cin >> n;
for (i = 0; i < n; i++) {
int davez;
cin >> davez;
casa.insert(davez);
}
cin >> valor;
set < int>::iterator it;
for (it = casa.begin(); it != casa.end(); it++) {
if (casa.count(valor - *it)) {
cout << *it << " " << valor - *it << endl;
return 0;
}
}
return 0;
}
Copy The Code &
Try With Live Editor
Input
1
2
3
5
8
Output