A1029
很简单的一道题
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
int n,m;
scanf("%d",&n);
vector<int> a(n);
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
scanf("%d",&m);
a.resize(n+m);//调整容器a的大小,使其能容纳n+m个元素
for(int i=n;i<n+m;i++)
{
scanf("%d",&a[i]);
}
sort(a.begin(),a.end());
printf("%d",a[(n+m-1)/2]);
return 0;
}
A1089 Insert or Merge插入或合并
没看明白
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int n,a[101],b[101],i,j;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(int i=0;i<n;i++)
{
scanf("%d",&b[i]);
}
for(i=0;i<n-1&&b[i]<=b[i+1];i++);//找到从小到大的排序的最后一个数的下标
for(j=i+1;a[j]==b[j]&&j<n;j++);
if(j==n){
cout<<"Insertion Sort"<<endl;//说明是插入排序
sort(a,a+i+2);
}else {
cout<<"Merge Sort"<<endl;//说明是归并排序
int k=1,flag=1;
while(flag){
flag=0;
for(i=0;i<n;i++)
{
if(a[i]!=b[i])
flag=1;
}
k=k*2;
for(i=0;i<n/k;i++)
sort(a+i*k,a+(i+1)*k);
sort(a+n/k*k,a+n);
}
}
for(j=0;j<n;j++){
if(j!=0) printf(" ");
printf("%d",a[j]);
}
return 0;
}