杭电 2019 数列有序!

http://acm.hdu.edu.cn/showproblem.php?pid=2019

数列有序!

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)

Total Submission(s): 44844    Accepted Submission(s): 19451

Problem Description

有n(n<=100)个整数,已经按照从小到大顺序排列好,现在另外给一个整数x,请将该数插入到序列中,并使新的序列仍然有序。

Input

输入数据包含多个测试实例,每组数据由两行组成,第一行是n和m,第二行是已经有序的n个数的数列。n和m同时为0标示输入数据的结束,本行不做处理。

Output

对于每个测试实例,输出插入新的元素后的数列。

Sample Input

3 3
1 2 4
0 0

Sample Output

1 2 3 4

Author

lcy

一看上去就觉得是个简单题,但是做起来的时候似乎没有想的那么简单,难度不大,细心一点就好了。*-*这里处理的时候给了两种方法。

AC代码:

#include<iostream>
#include<cstring>
using namespace std;

int a[101];
int main()
{
	int n,x,k,i;
	while(~scanf("%d%d",&n,&x))
	{
		memset(a,0,sizeof(a));
		if(n==0&&x==0)break;
		for(i=0;i<n;i++)
			scanf("%d",&a[i]);
		if(x>a[n-1])
			a[n]=x;
		else
		{
		/*	i--;
		while(a[i]>x)
		{
		a[i+1]=a[i];
		i--;
		}
		a[i+1]=x;
		}
			*/
			for(i=0;i<n;i++)
			{
				if(x<a[i])
				{
					k=i;
					break;
				}
			}
			for(int j=n;j>k;j--)
			{
				a[j]=a[j-1];

			}
			a[k]=x;
		}

			for(i=0;i<n;i++)
				printf("%d ",a[i]);
			printf("%d\n",a[n]);
	}
	return 0;
}

杭电 2019 数列有序!

时间: 2024-08-09 06:34:59

杭电 2019 数列有序!的相关文章

杭电2019 数列有序!(STL解法)

由于这题对于学过数据结构的我来说,真的是很简单,为了减少时间上的损失,链表无疑是最好的选择(因为数组要往后移位子).然后,因为最近想玩些STL的骚操作,所以就用<list>了,然后顺便学了下迭代器的用法,其原理其实和指针差不多,就是比指针安全.然后,在a题的过程中发现指针的+-还是有些问题的,所以,就用数值代替了.闲话不多说,奉上ac代码: #include <iostream> #include<math.h> #include <iomanip> #in

杭电2016数列有序

#include<iostream>using namespace std;int main(){ int n,m,t = 0; int a[110], b[110]; while (cin >>n>>m) { if (n == 0 && m ==0)//讨论零的情况 { break; } else { for (int i = 0; i < n; i++)//输入数组值 cin >> a[i]; for (int i = 0; i &

杭电ACM2019--数列有序!

数列有序! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 122510    Accepted Submission(s): 50550 Problem Description 有n(n<=100)个整数,已经按照从小到大顺序排列好,现在另外给一个整数x,请将该数插入到序列中,并使新的序列仍然有序. Input 输入数据包含多个测试实例

HDU 2019 数列有序!

Time Limit: 1000 MS Memory Limit: 32768 KB 64-bit integer IO format: %I64d , %I64u   Java class name: Main [Submit] [Status] [Discuss] Description 有n(n<=100)个整数,已经按照从小到大顺序排列好,现在另外给一个整数x,请将该数插入到序列中,并使新的序列仍然有序. Input 输入数据包含多个测试实例,每组数据由两行组成,第一行是n和m,第二行是

HDOJ 2019 数列有序!

#include<vector> #include<iostream> #include<algorithm> #include<cstdio> using namespace std; bool cmp(int a, int b) { return a < b; } bool cmp2(int a, int b) { return a > b; } int main() { int n, m; while (cin >> n &am

hdu 2019 数列有序!

这是去年用来训练编码能力的一道水题,最近学了链表就重新写了一下这题,对指针不熟悉唉,指来指去,人都晕了 #include<iostream> #include<malloc.h> using namespace std; struct stu { int vaule; stu* next; }; int main() { int n,m; while(cin>>n>>m&&n&&m) { stu *root=(stu*)mal

杭电2019

#include <iostream> #include <cstdlib> #include <cmath> #include <iomanip> #include <climits> #include <stdio.h> #include <string.h> #include <list> using namespace std; int main() { list<int> a; int n

杭电oj2012-2021

2012  素数判定 1 #include <stdio.h> 2 #include <math.h> 3 4 int main() 5 { 6 int x,y,i,j,a,flag; 7 while(scanf("%d %d",&x,&y)!=EOF){ 8 flag = 0; 9 if(x==0&&y==0){break;} 10 for(i=x;i<=y;i++){ 11 a = i*i+i+41; 12 for(j=

2019杭电多校第九场

2019杭电多校第九场 熟悉的后半场挂机节奏,又苟进首页了,很快乐 1001. Rikka with Quicksort upsolved 不是我做的,1e9调和级数分段打表 1002. Rikka with Cake solved at 01:11 有一个矩形,给你很多射线(射线只有横平竖直的四个方向),问把矩形切成了多少块 队友说答案是交点数加一,作为一个合格的工具人,当然是把队友的想法实现啦 二维坐标离散化枚举纵坐标维护横坐标,常规套路,树状数组也可以做(我是线段树写习惯了根本没想起来还有