题意:
输入一个正整数N(<=2e5),接着输入N个非递减序的长整数。
输入一个正整数N(<=2e5),接着输入N个非递减序的长整数。(重复一次)
输出两组数合并后的中位数。(200ms,合并后排序会超时,利用两组数是有序的进行模拟)
AAAAAccepted code:
1 #define HAVE_STRUCT_TIMESPEC 2 #include<bits/stdc++.h> 3 using namespace std; 4 long a[200007]; 5 int main(){ 6 int n; 7 cin>>n; 8 for(int i=1;i<=n;++i) 9 cin>>a[i]; 10 int m; 11 cin>>m; 12 long x; 13 int l=0,r=n+m; 14 int mid=(l+r-1)/2+1; 15 int cnt=0; 16 ++l; 17 for(int i=1;i<=m;++i){ 18 cin>>x; 19 while(l<=n&&a[l]<x){ 20 ++cnt; 21 if(cnt==mid) 22 cout<<a[l]; 23 ++l; 24 } 25 ++cnt; 26 if(cnt==mid) 27 cout<<x; 28 } 29 while(l<=n){ 30 ++cnt; 31 if(cnt==mid) 32 cout<<a[l]; 33 ++l; 34 } 35 return 0; 36 }