답안 #675116

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
675116 2022-12-27T02:03:53 Z anhduc2701 Table Tennis (info1cup20_tabletennis) C++17
100 / 100
493 ms 10824 KB
/*
#pragma GCC optimize("Ofast")
#pragma GCC target("avx,avx2,fma")
#pragma GCC optimize("unroll-loops")
*/
#include<bits/stdc++.h>
#define all(x) x.begin(), x.end()
#define len(x) ll(x.size())
#define eb emplace_back
#define PI 3.14159265359
#define fi first
#define se second
#define mp make_pair
#define pb push_back
#define MIN(v) *min_element(all(v))
#define MAX(v) *max_element(all(v))
#define BIT(x,i) (1&((x)>>(i)))
#define MASK(x) (1LL<<(x))
#define task "tnc"  
using namespace std;
typedef long long ll;
const ll INF=1e18;
const int maxn=1e6+5;
const int mod=1e9+7;
const int mo=998244353;
using pi=pair<ll,ll>;
using vi=vector<ll>;
using pii=pair<pair<ll,ll>,ll>;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
int a[200005];
map<int,int>z;
signed main()
{
	cin.tie(0),cout.tie(0)->sync_with_stdio(0);
    //freopen(task".inp" , "r" , stdin);
    //freopen(task".out" , "w" , stdout);
   	int n,k;
   	cin>>n>>k;
   	for(int i=1;i<=n+k;i++){
   		cin>>a[i];
   	}
   	int cap=n/2;
   	for(int i=1;i<=k+1;i++){
   		for(int j=n+k;j>=max(n,i+1);j--){
   			int l=i+1;
   			int r=j;
   			int tong=a[i]+a[j];
   			vector<pair<int,int>>ans;
   			ans.pb({a[i],a[j]});
   			if(z[tong]==0){
	   			z[tong]=1;

	   			while(l<r && (cap-ans.size())*2<=(r-l+1)){
	   				if(a[l]+a[r]==tong){
	   					ans.pb({a[l],a[r]});
	   					l++;
	   				}
	   				else if(a[l]+a[r]>tong){
	   					r--;
	   				}
	   				else if(a[l]+a[r]<tong){
	   					l++;
	   				}
	   			}
	   			if(ans.size()==n/2){
	   				vector<int>sz;
	   				for(auto v:ans){
	   					sz.pb(v.fi);
	   					sz.pb(v.se);
	   				}
	   				sort(sz.begin(),sz.end());
	   				for(auto v:sz){
	   					cout<<v<<" ";
	   				}
	   				return 0;
	   			}
   			}
   		}
   	}
    return 0;
}

Compilation message

tabletennis.cpp: In function 'int main()':
tabletennis.cpp:53:39: warning: comparison of integer expressions of different signedness: 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   53 |        while(l<r && (cap-ans.size())*2<=(r-l+1)){
      |                     ~~~~~~~~~~~~~~~~~~^~~~~~~~~
tabletennis.cpp:65:21: warning: comparison of integer expressions of different signedness: 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   65 |        if(ans.size()==n/2){
      |           ~~~~~~~~~~^~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 340 KB Output is correct
2 Correct 1 ms 340 KB Output is correct
3 Correct 1 ms 340 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 6 ms 840 KB Output is correct
2 Correct 41 ms 3664 KB Output is correct
3 Correct 33 ms 3664 KB Output is correct
4 Correct 32 ms 3608 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 34 ms 3664 KB Output is correct
2 Correct 33 ms 3648 KB Output is correct
3 Correct 34 ms 3704 KB Output is correct
4 Correct 33 ms 3660 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 3 ms 724 KB Output is correct
3 Correct 1 ms 340 KB Output is correct
4 Correct 2 ms 468 KB Output is correct
5 Correct 1 ms 340 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 1 ms 212 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 1 ms 340 KB Output is correct
3 Correct 2 ms 340 KB Output is correct
4 Correct 1 ms 396 KB Output is correct
5 Correct 1 ms 340 KB Output is correct
6 Correct 1 ms 340 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 34 ms 3704 KB Output is correct
3 Correct 41 ms 3600 KB Output is correct
4 Correct 40 ms 3636 KB Output is correct
5 Correct 33 ms 3668 KB Output is correct
6 Correct 47 ms 4532 KB Output is correct
7 Correct 33 ms 5060 KB Output is correct
8 Correct 36 ms 5056 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 340 KB Output is correct
2 Correct 102 ms 10824 KB Output is correct
3 Correct 32 ms 3724 KB Output is correct
4 Correct 67 ms 7080 KB Output is correct
5 Correct 33 ms 3692 KB Output is correct
6 Correct 493 ms 4756 KB Output is correct
7 Correct 71 ms 7296 KB Output is correct
8 Correct 34 ms 5156 KB Output is correct