제출 #1062224

#제출 시각아이디문제언어결과실행 시간메모리
1062224peraTable Tennis (info1cup20_tabletennis)C++17
0 / 100
55 ms3944 KiB
#include<bits/stdc++.h>
using namespace std;
const int TL = 4e8;
int main(){
   srand(time(0));
   int n , k;
   cin >> n >> k;
   vector<int> a(n + k + 1);
   for(int i = 1;i <= n + k;i ++){
      cin >> a[i];
   }
   auto Check = [&](int sum){
      vector<int> ans; 
      int l = 1 , r = n + k;
      while(l < r && (int)ans.size() < n){
         int val = a[l] + a[r];
         if(val == sum){
            ans.emplace_back(l++);
            ans.emplace_back(r--);
         }else if(val > sum){
            --r;
         }else{
            ++l;
         }
      }
      if((int)ans.size() == n){
         sort(ans.begin() , ans.end());
         for(int i = 0;i < n;i ++){
            cout << ans[i] << " ";
         }
         cout << endl;
         exit(0);
      }
   };
   if(n * k * k < TL){
      for(int x = 1;x <= k + 1;x ++){
         for(int y = n - 1;y <= n + k;y ++){
            Check(a[x] + a[y]);
         }
      }
   }
   for(int x = 1;x <= 1000;x ++){
      int u = rand() % (n + k) + 1;
      int v = rand() % (n + k) + 1;
      if(u != v){
         Check(a[u] + a[v]);
      }
   }
}
#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...