排序一次查找两元素
Posted rhythm-
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了排序一次查找两元素相关的知识,希望对你有一定的参考价值。
问题 A: 【排序】一次查找两元素
时间限制: 1 Sec 内存限制: 64 MB提交: 30 解决: 21
[提交] [状态] [讨论版] [命题人:]
题目描述
修罗王和邪狼逃出监狱,混入了监狱门口检查站前排成一列准备待检的囚犯人群中,由于每个囚犯入狱前均以编号来表示,且该编号的编写规则是囚犯的危险性越大,则编号就越小。显然,修罗王和邪狼因其极端的危险性,其编号必定是这一列无序排列的人群中最小的两个,那么,如何对所有人的编号只用一遍扫描,即找出修罗王和邪狼的编号呢?
输入
共两行,第一行为一个数N(N≤1000000),即排队的人数,第二行为N个数,即每个人的编号,每个编号均不超过int类型的最大值。
输出
输出由小到大排列的最小的两个编号。
样例输入
10
2 1 76 11 4 765 32 56 3 23
样例输出
1 2
分析:排序,输出前两个元素。#include <iostream> #include <string> #include <cstdio> #include <cmath> #include <cstring> #include <algorithm> #include <vector> #include <queue> #include <deque> #include <map> #define range(i,a,b) for(int i=a;i<=b;++i) #define LL long long #define rerange(i,a,b) for(int i=a;i>=b;--i) #define fill(arr,tmp) memset(arr,tmp,sizeof(arr)) using namespace std; int n; vector<int>num; void init(){ cin>>n; num.resize(n+1); range(i,1,n)cin>>num[i]; sort(num.begin()+1,num.end()); } void solve(){ cout<<num[1]<<" "<<num[2]<<endl; } int main() { init(); solve(); return 0; }
以上是关于排序一次查找两元素的主要内容,如果未能解决你的问题,请参考以下文章