제출 #366250

#제출 시각아이디문제언어결과실행 시간메모리
366250Ahmad_HasanTable Tennis (info1cup20_tabletennis)C++17
87 / 100
3087 ms6636 KiB
#include <bits/stdc++.h> #define int long long /** |||||||||| ||||| ||||| |||||||||| ||||||||||||| ||||| ||||| ||||| |||| |||||| ||||| ||||| ||||| ||||||||||||||||| ||||||||||||||| |||||||||| ||||||||||||||||||| ||||||||||||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| |||||||||| AHMED;HASSAN;SAEED; */ using namespace std; int32_t main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n,k; cin>>n>>k; vector<int>v(n+k); map<int,int >mp,mp2; int nn=n+k; for(int i=0;i<nn;i++){ cin>>v[i]; } vector<vector<pair<int,int> > >pos((k+5)*(k+5)); vector<int>sums((k+5)*(k+5)); int cr=0; int f=0; int crsm; for(int i=0;i<nn&&i<k+2&&!f;i++){ for(int j=nn-1;j>=0&&(nn-1-j)<=k+2-i&&!f;j--){ int cnt=0; crsm=v[i]+v[j]; for(int k=0;k<nn;k++){ vector<int>::iterator it2=lower_bound(v.begin(),v.end(),crsm-v[k]); if(it2==v.end()||*it2!=crsm-v[k])continue; int vl=it2-v.begin(); if(vl>k){ cnt++; if(cnt>=n/2){ f=1; break; } } } } } int mxi=0; sums[0]=crsm; for(int j=0;j<1;j++){ if(j<cr-1&&sums[j]==sums[j+1])continue; for(int i=0;i<nn;i++){ vector<int>::iterator it2=lower_bound(v.begin(),v.end(),sums[j]-v[i]); if(it2==v.end()||*it2!=sums[j]-v[i])continue; int vl=it2-v.begin(); if(vl>i){ pos[j].push_back({i,vl}); if(pos[j].size()>=n/2){ f=1; break; } } } } /** for(int i=0;i<pos.size();i++){ for(int j=0;j<pos[i].size();j++){ cout<<pos[i][j].first<<'-'<<pos[i][j].second<<' '; } cout<<'\n'; } */ for(int i=0;i<pos.size();i++) if(pos[i].size()>pos[mxi].size()) mxi=i; vector<int>ans(n); int l=0,r=n-1; for(int i=0;i<pos[mxi].size()&&i<n/2;i++){ ans[l]=(v[pos[mxi][i].first]); ans[r]=(v[pos[mxi][i].second]); l++; r--; } for(int i=0;i<ans.size();i++) cout<<ans[i]<<' '; return 0; } /** 4 3 100000000000 200000000000 300000000000 400000000000 800000000000 1000000000000 2000000000000 */

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

tabletennis.cpp: In function 'int32_t main()':
tabletennis.cpp:64:33: 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]
   64 |                 if(pos[j].size()>=n/2){
      |                    ~~~~~~~~~~~~~^~~~~
tabletennis.cpp:80:18: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::vector<std::pair<long long int, long long int> > >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   80 |     for(int i=0;i<pos.size();i++)
      |                 ~^~~~~~~~~~~
tabletennis.cpp:85:18: 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]
   85 |     for(int i=0;i<pos[mxi].size()&&i<n/2;i++){
      |                 ~^~~~~~~~~~~~~~~~
tabletennis.cpp:90:18: 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]
   90 |     for(int i=0;i<ans.size();i++)
      |                 ~^~~~~~~~~~~
tabletennis.cpp:55:12: warning: 'crsm' may be used uninitialized in this function [-Wmaybe-uninitialized]
   55 |     sums[0]=crsm;
#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...