제출 #518290

#제출 시각아이디문제언어결과실행 시간메모리
518290Ronin13Table Tennis (info1cup20_tabletennis)C++14
24 / 100
3082 ms665352 KiB
#include<bits/stdc++.h> #define ll long long #define ull unsigned ll #define pb push_back #define f first #define s second #define pii pair<int,int> #define pll pair<ll,ll> #define epb emplace_back #define inf 1e9+1 #define linf 1e18+11 using namespace std; unordered_map<int,pii>used; int dp[1001][150001]; int main(){ int n;cin>>n; int k;cin>>k; int a[n+k+1]; for(int i=1;i<=n+k;i++){ cin>>a[i]; } for(int i=0;i<=2*k;i++){ for(int j=0;j<=n;j++)dp[i][j]=-inf; } dp[0][0]=0; sort(a+1,a+1+n+k); for(int i=2*k;i>=1;i--){ for(int j=i+1;j<=n+k;j++){ int x=a[i]+a[j]; dp[i][j]=dp[used[x].f][used[x].s]+2; } for(int j=i+1;j<=n+k;j++){ int x=a[i]+a[j]; used[x]={i,j}; } } int val=0; for(int i=1;i<=2*k;i++){ for(int j=1;j<=n+k;j++){ if(dp[i][j]>=n){ val=a[i]+a[j]; break; } } } int l=1,r=n+k; vector<int>vec; while(l<r){ if(vec.size()==n)break; int ss=a[l]+a[r]; if(ss==val){ vec.pb(a[l]); vec.pb(a[r]); l++; r--; continue; } if(ss>val){ r--; continue; } l++; continue; } sort(vec.begin(),vec.end()); for(int to:vec)cout<<to<<' '; }

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

tabletennis.cpp: In function 'int main()':
tabletennis.cpp:50:22: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   50 |         if(vec.size()==n)break;
      |            ~~~~~~~~~~^~~
#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...