# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
667634 | Hacv16 | Table Tennis (info1cup20_tabletennis) | C++17 | 0 ms | 0 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MAX = 2e6 + 50;
const int INF = 0x3f3f3f3f;
ll n, k, ans;
vector<ll> v;
bool check(int j){
vector<ll> aux;
for(int i = 0; i < v.size(); i++){
if(i == j) continue;
aux.push_back(v[i]);
}
ll sum = aux[0] + aux[aux.size() - 1];
for(int l = 1, r = aux.size() - 2; l < r; l++, r--)
if(aux[l] + aux[r] != sum) return false;
return true;
}
void bt(int i, int chosen, vector<ll> aux){
if(chosen > n || i > tot) return;
if(chosen + (tot - i) < n) return;
if(i == tot){
if(chosen == n){
ll sum = aux[0] + aux[aux.size() - 1];
bool isAns = true;
for(int l = 1, r = aux.size() - 2; l < r; l++, r--)
if(aux[l] + aux[r] != sum){ isAns = false; break; }
if(isAns){
for(auto x : aux)
cout << x << ' ';
cout << '\n';
exit(0);
}
}
return;
}
vector<ll> sla = aux;
sla.push_back(v[i]);
bt(i + 1, chosen + 1, sla);
bt(i + 1, chosen, aux);
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cin >> n >> k;
if(n + k <= 18){
vector<ll> trash;
bt(0, 0, trash);
return 0;
}
for(int i = 0; i < n + k; i++){
ll x; cin >> x;
v.push_back(x);
}
for(int i = 0; i < v.size(); i++)
if(check(i)){ ans = i; break;}
for(int i = 0; i < v.size(); i++){
if(i == ans) continue;
cout << v[i] << ' ';
}
cout << '\n';
return 0;
}