답안 #718188

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
718188 2023-04-03T15:08:52 Z vjudge1 Table Tennis (info1cup20_tabletennis) C++17
100 / 100
65 ms 5704 KB
#include<bits/stdc++.h>
using namespace std;
#define int long long 
#define ll long long
#define pii pair<int,int>
#define F first
#define S second
#define endl '\n'
#define pb push_back
#define sz(a) (int)a.size()
#define all(a) a.begin(),a.end()
const int mod = 1e9 + 7;
const int N = 1e6 + 15;
const ll inf = 1e18;
int n,k,o;
vector<int> a;
int solve(int x,int p1,int p2,int curk){
  int cur = 2;
  while (p1<p2){
    if (curk>k) break;
    if (a[p1]+a[p2]==x){
      cur+=2;
      p1++;p2--;
    }
    else if (a[p1]+a[p2] < x){
      curk++;
      p1++;
    }
    else if (a[p1]+a[p2] > x){
      curk++;
      p2--;
    }
  }
  return cur;
}
void print(int x){
  int p1=0,p2=n-1;
  vector<int> ans;
  while (p1<p2){
    if (a[p1]+a[p2]==x){
      ans.pb(a[p1]);
      ans.pb(a[p2]);
      if (sz(ans)==o) break;
      p1++;p2--;
    }
    else if (a[p1]+a[p2] < x){
      p1++;
    }
    else if (a[p1]+a[p2] > x){
      p2--;
    }
  }
  sort(all(ans));
  for (auto it :ans){
    cout << it << ' ';
  }
  return;
}
int32_t main(){
	ios_base::sync_with_stdio(0);cin.tie(0);
  cin >> n >> k;
  o = n;
  n = n+k;
  a.resize(n);
  for (int i=0;i<n;i++){
    cin >> a[i];
  }
k++;
  int ans = -1;
  for (int i=0;i<k;i++){
    for (int j=0;j<k-i;j++){
      if (solve(a[i]+a[n-1-j],i+1,n-1-j-1,i+j)>=o){
        ans = a[i]+a[n-1-j]; 
        break;
      }
    }
    if (ans!=-1) break;
  }
  print(ans);
}
# 결과 실행 시간 메모리 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 984 KB Output is correct
2 Correct 35 ms 4292 KB Output is correct
3 Correct 32 ms 4276 KB Output is correct
4 Correct 31 ms 4172 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 32 ms 4208 KB Output is correct
2 Correct 31 ms 4300 KB Output is correct
3 Correct 31 ms 4316 KB Output is correct
4 Correct 31 ms 4184 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 1 ms 212 KB Output is correct
3 Correct 0 ms 212 KB Output is correct
4 Correct 1 ms 212 KB Output is correct
5 Correct 1 ms 212 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 1 ms 212 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 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 2 ms 340 KB Output is correct
6 Correct 1 ms 340 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 34 ms 4284 KB Output is correct
3 Correct 30 ms 4236 KB Output is correct
4 Correct 31 ms 4188 KB Output is correct
5 Correct 34 ms 4164 KB Output is correct
6 Correct 32 ms 4300 KB Output is correct
7 Correct 32 ms 4208 KB Output is correct
8 Correct 30 ms 4256 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 50 ms 4176 KB Output is correct
3 Correct 32 ms 5692 KB Output is correct
4 Correct 45 ms 5704 KB Output is correct
5 Correct 31 ms 5592 KB Output is correct
6 Correct 33 ms 5700 KB Output is correct
7 Correct 65 ms 5612 KB Output is correct
8 Correct 34 ms 5696 KB Output is correct