답안 #735089

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
735089 2023-05-03T13:57:49 Z NintsiChkhaidze Table Tennis (info1cup20_tabletennis) C++17
100 / 100
103 ms 12728 KB
#include <bits/stdc++.h>
#define pb push_back
#define f first
#define s second
#define int long long
using namespace std;

const int N = 2e5+5,inf = 1e9;
int a[N],n,k;
vector <int> v;

void check(int sum){
	v.clear();
	int r = n + k;
	for (int i = 1; i <= n + k; i++){
		while (i < r){
			if (a[i] + a[r] > sum) {
				r--;
				continue;
			}
			break;
		}
		if (i < r && a[i] + a[r] == sum){
			v.pb(a[i]),v.pb(a[r]);
			r--;
		}
	}
	
	if (v.size() == n){
		sort(v.begin(),v.end());
		for (int x: v) cout<<x<<" ";
		cout<<endl;
		exit(0);
	}
	
}
signed main (){
	ios_base::sync_with_stdio(0),cin.tie(NULL),cout.tie(NULL);
	
	cin>>n>>k;
	
	for (int i = 1; i <= n+k;i++)
		cin>>a[i];
	
	if (n <= 4*k){
		for (int i = 1; i <= k+1; i++){
			int c=0;
			for (int j = n + k; j > i; j--){
				++c;
				if (c > k+1) break;
				check(a[i] + a[j]);
			}
		}
		exit(0);
	}
	vector <int> vec;
	for (int i = 1; i <= 2*k; i++){
		int c=0;
		for (int j = n + k; j > i; j--){
			++c;
			if (c > 2*k) break;
			vec.pb(a[i]+a[j]);
		}
	}
	sort(vec.begin(),vec.end());
	int cnt=0;
	for (int i = 0; i < vec.size(); i++){
		if (i && vec[i] != vec[i - 1]){
			if (cnt >= k) check(vec[i - 1]);
			cnt=0;
		}
		++cnt;
	}
	if (cnt >= k) check(vec.back());
}
/*
6 1
1 3 4 5 6 8 431
*/

Compilation message

tabletennis.cpp: In function 'void check(long long int)':
tabletennis.cpp:29:15: warning: comparison of integer expressions of different signedness: 'std::vector<long long int>::size_type' {aka 'long unsigned int'} and 'long long int' [-Wsign-compare]
   29 |  if (v.size() == n){
      |      ~~~~~~~~~^~~~
tabletennis.cpp: In function 'int main()':
tabletennis.cpp:67:20: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   67 |  for (int i = 0; i < vec.size(); i++){
      |                  ~~^~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 340 KB Output is correct
2 Correct 1 ms 340 KB Output is correct
3 Correct 1 ms 340 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 5 ms 1008 KB Output is correct
2 Correct 41 ms 4324 KB Output is correct
3 Correct 31 ms 4288 KB Output is correct
4 Correct 29 ms 4368 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 31 ms 4364 KB Output is correct
2 Correct 32 ms 4340 KB Output is correct
3 Correct 34 ms 4428 KB Output is correct
4 Correct 30 ms 4336 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 3 ms 212 KB Output is correct
3 Correct 0 ms 212 KB Output is correct
4 Correct 2 ms 212 KB Output is correct
5 Correct 1 ms 212 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 1 ms 212 KB Output is correct
3 Correct 1 ms 212 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 1 ms 340 KB Output is correct
3 Correct 1 ms 340 KB Output is correct
4 Correct 1 ms 340 KB Output is correct
5 Correct 1 ms 340 KB Output is correct
6 Correct 1 ms 340 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 32 ms 4388 KB Output is correct
3 Correct 41 ms 4448 KB Output is correct
4 Correct 33 ms 4472 KB Output is correct
5 Correct 34 ms 4516 KB Output is correct
6 Correct 33 ms 4488 KB Output is correct
7 Correct 37 ms 4552 KB Output is correct
8 Correct 35 ms 4520 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 77 ms 11248 KB Output is correct
3 Correct 88 ms 12608 KB Output is correct
4 Correct 78 ms 12588 KB Output is correct
5 Correct 103 ms 12588 KB Output is correct
6 Correct 58 ms 12728 KB Output is correct
7 Correct 73 ms 12588 KB Output is correct
8 Correct 75 ms 12572 KB Output is correct