Submission #1118566

#TimeUsernameProblemLanguageResultExecution timeMemory
1118566ElayV13Table Tennis (info1cup20_tabletennis)C++17
34 / 100
3090 ms511712 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long
#define ld double


const int INF = 1e18;
const int mod = 12345;
const int sz = 1e6 + 5;

int n , k;

void solve()
{
   cin >> n >> k;
   vector < int > a(n + k);
   for(int i = 0;i < n + k;i++)
   {
      cin >> a[i];
   }
   sort(a.begin() , a.end());
   vector < int > q1;
   vector < int > q2;
   for(int i = 1;i < n + k;i++) q1.push_back(a[i]);
   for(int i = 0;i < n + k - 1;i++) q2.push_back(a[i]);
   set < int > s1;
   for(int i = 0;i < q1.size() / 2;i++)
   {
      s1.insert(q1[i] + q1[q1.size() - i - 1]);
   }
   if(s1.size() == 1)
   {
      for(int i : q1) cout << i << ' ';
      return;
   }
   s1.clear();
   for(int i = 0;i < q2.size() / 2;i++)
   {
      s1.insert(q2[i] + q2[q2.size() - i - 1]);
   }
   if(s1.size() == 1)
   {
      for(int i : q2) cout << i << ' ';
      return;
   }
   int ls = a[0] + a[n + k - 1];
   map < int , int > cnt;
   for(int i = 0;i < n + k;i++) cnt[a[i]]++;
   int in = -1;
   for(int i = 0;i < n + k;i++)
   {
      if(!cnt[ls - a[i]])
      {
         in = i;
         break;
      }
   }
   vector < int > l;
   for(int i = 0;i < n + k;i++)
   {
      if(i == in) continue;
      l.push_back(a[i]);
   }
   for(int i : l){
      cout << i << ' ';
   }
   cout << endl;
}

signed main()
{
   ios_base::sync_with_stdio(0);cin.tie(0);
   if(k == 1)
   {
      solve();
      return 0;
   }
   cin >> n >> k;
   vector < int > a(n + k);
   map < int , int > cnt;
   for(int i = 0;i < n + k;i++)
   {
      cin >> a[i];
      cnt[a[i]]++;
   }
   sort(a.begin() , a.end());
   int ls = (n / 2);
   map < int , int > m;
   int pos = -1;
   for(int i = 0;i < n + k - 1;i++)
   {
      bool f = 0;
      for(int j = i + 1;j < n + k;j++)
      {
         if(a[j] == a[j - 1]) continue;
         m[a[i] + a[j]]++;
         if(m[a[i] + a[j]] == ls)
         {
            f = 1;
            pos = a[i] + a[j];
            break;
         }
      }
      if(f) break;
   }
   vector < pair < int , int > > ans;
   for(int i = 0;i < n;i++)
   {
      if(ans.size() == n / 2) break;
      if(cnt[pos - a[i]] > 0) ans.push_back({a[i] , pos - a[i]});
   }
   vector < int > anss;
   for(int i = 0;i < ans.size();i++)
   {
      anss.push_back(ans[i].first);
      anss.push_back(ans[i].second);
   }
   sort(anss.begin() , anss.end());
   for(int i : anss) cout << i << ' ';
   //cout << pos << endl;
}

Compilation message (stderr)

tabletennis.cpp: In function 'void solve()':
tabletennis.cpp:28: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]
   28 |    for(int i = 0;i < q1.size() / 2;i++)
      |                  ~~^~~~~~~~~~~~~~~
tabletennis.cpp:38: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]
   38 |    for(int i = 0;i < q2.size() / 2;i++)
      |                  ~~^~~~~~~~~~~~~~~
tabletennis.cpp: In function 'int main()':
tabletennis.cpp:110:21: warning: comparison of integer expressions of different signedness: 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} and 'long long int' [-Wsign-compare]
  110 |       if(ans.size() == n / 2) break;
      |          ~~~~~~~~~~~^~~~~~~~
tabletennis.cpp:114:20: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  114 |    for(int i = 0;i < ans.size();i++)
      |                  ~~^~~~~~~~~~~~
#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...