제출 #525197

#제출 시각아이디문제언어결과실행 시간메모리
525197KhizriTable Tennis (info1cup20_tabletennis)C++17
72 / 100
3094 ms40516 KiB
#include <bits/stdc++.h> using namespace std; //------------------------------DEFINE------------------------------ //****************************************************************** #define IOS ios_base::sync_with_stdio(false); cin.tie(0),cout.tie(0) #define ll long long #define pb push_back #define F first #define S second #define INF 1e18 #define all(v) (v).begin(),(v).end() #define rall(v) (v).rbegin(),(v).rend() #define pii pair<int,int> #define pll pair<ll,ll> #define OK cout<<"Ok"<<endl; #define MOD (ll)(1e9+7) #define endl "\n" //****************************************************************** //----------------------------FUNCTION------------------------------ //****************************************************************** ll gcd(ll a,ll b){ if(a>b) swap(a,b); if(a==0) return a+b; return gcd(b%a,a); } ll lcm(ll a,ll b){ return a/gcd(a,b)*b; } bool is_prime(ll n){ ll k=sqrt(n); if(n==2) return true; if(n<2||n%2==0||k*k==n) return false; for(int i=3;i<=k;i+=2){ if(n%i==0){ return false; } } return true; } //***************************************************************** //--------------------------MAIN-CODE------------------------------ const int mxn=2e5+5; int t=1,n,k,x,arr[mxn]; map<int,int>mp; map<int,vector<int>>ind; vector<int>funk(int sum){ map<int,int>MP=mp; int ans=0; for(int i=1;i<=n;i++){ int a=arr[i],b=sum-arr[i]; ans+=min(MP[a],MP[b]); MP[a]=0,MP[b]=0; } if(ans<x/2){ return {}; } vector<int>vt; MP=mp; for(int i=1;i<=n&&vt.size()<x;i++){ int a=arr[i],b=sum-arr[i],say=0; if(MP[a]&&MP[b]&&a!=b){ vt.pb(a); vt.pb(b); MP[a]=0,MP[b]=0; } } if(vt.size()<x){ return {}; } return vt; } void solve2(){ for(int i=1;i<=n;i++){ for(int j=i+1;j<=n;j++){ vector<int>vt=funk(arr[i]+arr[j]); if(vt.size()==0){ continue; } sort(all(vt)); for(int v:vt){ cout<<v<<' '; } cout<<endl; exit(0); } } } void solve(){ cin>>n>>k; n+=k; x=n-k; for(int i=1;i<=n;i++){ cin>>arr[i]; mp[arr[i]]++; ind[arr[i]].pb(i); } sort(arr+1,arr+n+1); if(n<=300){ solve2(); return; } vector<int>a=funk(arr[1]+arr[n]); int q=k; for(int k=0;k<=q;k++){ for(int i=0;i<=k;i++){ vector<int>vt=funk(arr[1+i]+arr[n-(k-i)]); if(vt.size()==0){ continue; } sort(all(vt)); for(int v:vt){ cout<<v<<' '; } cout<<endl; return; } } } int main(){ IOS; //cin>>t; while(t--){ solve(); } return 0; }

컴파일 시 표준 에러 (stderr) 메시지

tabletennis.cpp: In function 'std::vector<int> funk(int)':
tabletennis.cpp:60:32: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   60 |     for(int i=1;i<=n&&vt.size()<x;i++){
      |                       ~~~~~~~~~^~
tabletennis.cpp:61:35: warning: unused variable 'say' [-Wunused-variable]
   61 |         int a=arr[i],b=sum-arr[i],say=0;
      |                                   ^~~
tabletennis.cpp:68:17: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   68 |     if(vt.size()<x){
      |        ~~~~~~~~~^~
#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...