栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

洛谷P7910

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

洛谷P7910

洛谷题库 P7910 [CSP-J 2021] 插入排序
#include 
using namespace std;
const int N=8005;
int o[N],h[N];
int ph[N],hp[N];
int n,q; 
inline int read(){//快速读入 
	int res=0,f=1;//res记录数值,l记录正负
	char c;
	c=getchar();
	while(c>'9' || c<'0'){
		if(c=='-'){
			f=-1;
		}
		c=getchar();
	}
	while(c>='0' && c<='9'){
		res=res*10+c-'0';
		c=getchar();
	}
	return res*f;
}
int  main(){	
	n=read();q=read();
	for(int i=1;i<=n;i++){
		o[i]=read();
		h[i]=o[i],ph[i]=hp[i]=i;//输入时初始化
	}
	for (int i = 1; i <= n; i++)
		for (int j = i; j >= 2; j--)
			if (h[j] < h[j-1]){
				swap(ph[hp[j]],ph[hp[j-1]]);
				swap(hp[j],hp[j-1]);//下标都应交换
				swap(h[j],h[j-1]);//交换原数组数值
			}
	int qu,id,va;//question 序号 value
	for(int i=1;i<=q;i++){
		qu=read();
		id=read();
		if(qu==1){
			va=read();
			o[id]=va;
			h[ph[id]]=va;//改变数值
			int k=ph[id];
			while(h[k-1]>h[k] || h[k-1]==h[k] && hp[k]h[k+1] || h[k]==h[k+1] && hp[k]>hp[k+1]){//右侧循环
				swap(ph[hp[k]],ph[hp[k+1]]);
				swap(hp[k],hp[k+1]);
				swap(h[k],h[k+1]);//有些变动
				k++;
				if(k>=n) break;
			}			
		}
		else printf("%dn",ph[id]);
	}	
	return 0;
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/656555.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号