제출 #1318230

#제출 시각아이디문제언어결과실행 시간메모리
1318230ElayV13Table Tennis (info1cup20_tabletennis)C++17
72 / 100
3094 ms23100 KiB
//g++ -o sol sol.cpp
//cd C:\Users\Asus-1\OneDrive\Desktop
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define ld long double
const int INF = 1e18;
const int N = 100001;
#define S(a) a.begin() , a.end()
#define pb push_back
#define READ(l , r , a) for(int i = l;i <= r;i++) cin >> a[i]
#define printV(l , r , a) for(int i = l;i <= r;i++) cout << a[i] << ' ';
#define pii pair < int , int >
#define FOR(i , l , r) for(int i = l;i <= r;i++)
int n , k;
vector < int > a;
bool check(int val){
	map < int , int > mp;
	for(int &i : a) mp[i]++;
	int cnt = 0;
	for(int i = 0;i < n + k;i++){
		int need = 1;
		if(a[i] == val - a[i]) ++need;
		if(mp[a[i]] >= need && mp[val - a[i]] >= need){
			++cnt;
			--mp[a[i]];
			--mp[val - a[i]];
		}
	}
	return (cnt >= n / 2);
}
vector < int > get_res(int val){
	vector < int > res;
	map < int , int > mp;
	for(int &i : a) mp[i]++;
	int cnt = 0;
	for(int i = 0;i < n + k;i++){
		int need = 1;
		if(a[i] == val - a[i]) ++need;
		if(mp[a[i]] >= need && mp[val - a[i]] >= need){
			++cnt;
			--mp[a[i]];
			--mp[val - a[i]];
			res.push_back(a[i]);
			res.push_back(val - a[i]);
		}
		if(res.size() == n) break;
	}
	return res;
}
signed main(){
        ios_base::sync_with_stdio();
        cin.tie(0);
	cout.tie(0);
	cin >> n >> k; a.resize(n + k);
	READ(0 , n + k - 1 , a);
	sort(S(a));
	vector < int > all;
	for(int i = 0;i <= k;i++){
		for(int j = n - 1;j < n + k;j++){
			all.push_back(a[i] + a[j]);
		}
	}
	for(int vl : all){
		bool can = check(vl);
		vector < int > res;
		if(can) res = get_res(vl);
		else continue;
		sort(S(res));
		printV(0 , n - 1 , res);
		cout << endl;
		return 0;
	}
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...