我的两群吃粽小伙伴

时间: 1ms        内存:128M

描述:

这时有两群小伙伴中的每个人都拎着刚买的热乎乎的粽子在食堂碰面了,他们打算把每个人手中所有的粽子摆在桌子上,可以看清楚大家都买了多少不同口味的粽子。强迫症患者看着乱糟糟的一堆粽子,主动提出要帮助大家按照每个人买的粽子的数量从小到大升序摆放,这样摆好的粽子数量序列是什么样的呢?

输入:

第一行输入两群人的人数分别是mn

第二行包含m个数据,分别表示第一群m个小伙伴每个人手中的粽子数量。

第三行包含n个数据,分别表示第二群n个小伙伴每个人手中的粽子数量。

输入数据均为整数,且不大于10000。

输出:

输出一行用单个空格分隔开的数,表示升序摆放好的粽子数量序列。

示例输入:

3 2
2 6 5
3 1

示例输出:

1 2 3 5 6

提示:

参考答案(内存最优[1092]):

#include <stdio.h>
int main()
{
    int m,n;
    int i,j;
    int t;
    int a[10001],b[10001],c[10001];
    scanf("%d %d",&m,&n);
    for(i=0;i<m;i++)
        scanf("%d",&a[i]);
    for(j=0;j<n;j++)
        scanf("%d",&b[j]);
    for(i=0;i<m;i++)
    {
        for(j=0;j<m-i-1;j++)
        {
          if(a[j]>a[j+1])
          {
              t=a[j];
              a[j]=a[j+1];
              a[j+1]=t;
          }
        }
    }
    for(i=0;i<n;i++)
    {
        for(j=0;j<n-i-1;j++)
        {
          if(b[j]>b[j+1])
          {
              t=b[j];
              b[j]=b[j+1];
              b[j+1]=t;
          }
        }
    }
    if(m>=n)
    {
        for(i=0;i<m;i++)
        {
            for(j=0;j<n;j++)
            {
                if(b[j]<a[i]&&b[j]!=-1)
                {
                    printf("%d ",b[j]);
                    b[j]=-1;
                }
            }
            printf("%d ",a[i]);
        }
        for(j=0;j<n;j++)
        {
            if(b[j]!=-1)
                printf("%d ",b[j]);
        }
        //printf("\n");
    }
    else
    {
        for(i=0;i<n;i++)
        {
            for(j=0;j<m;j++)
            {
                if(a[j]<b[i]&&a[j]!=-1)
                {
                    printf("%d ",a[j]);
                    a[j]=-1;
                }
            }
            printf("%d ",b[i]);
        }
        for(j=0;j<m;j++)
        {
            if(a[j]!=-1)
                printf("%d ",a[j]);
        }
        //printf("\n");
    }
    return 0;
}

参考答案(时间最优[8]):

#include <iostream>
#include<cstdio>
#include<string.h>
#include<math.h>
#include<algorithm>
using namespace std;
int main()
{
    int m,n,i,j;
    int u[100100];
    scanf("%d%d",&m,&n);
    m+=n;
    for(i=0;i<m;i++)
        scanf("%d",&u[i]);
    sort(u,u+m);
    for(i=0;i<m-1;i++)
        printf("%d ",u[i]);
    printf("%d\n",u[i]);
    return 0;
}

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。