赞
踩
目录
公司组织了一次考试,现在考试结果出来了,想看一下有没人存在作弊行为,但是员工太多了,需要先对员工进行一次过滤,再进一步确定是否存在作弊行为。
过滤的规则为:找到分差最小的员工ID对(p1,p2)列表,要求p1<p2
员工个数,取值范国:0<n<100000
员工ID为整数,取值范围:0<=n<=100000
考试成绩为整数,取值范围:0<=score<=300
输入描述
员工的ID及考试分数
输出描述
分差最小的员工ID对(p1,p2)列表,要求p1<p2。每一行代表一个集合,每个集合内的员工ID按顺序排列,多行结果也以员工对中p1值大小升序排列(如果p1相同则p2升序)。示例1:
输入:
5
1 90
2 91
3 95
4 96
5 100
输出:
1 2
3 4
说明:
输入: 第一行为员工个数n,后续的n行第一个数值为员工ID,第二个数值为员工考试分数输出:员工1和员工2的分差为1,员工3和员工4的分差也为1,因此最终结果为
1 2
3 4示例2:
输入:
5
1 90
2 91
3 92
4 85
5 86
输出:
1 2
2 3
4 5
1:第一步,对所有的分数进行排序,找到最小的分差。
2:第二步,对排序后的所有员工分数进行统计,满足最小分差,则输出。
3:也算是个简单了,考的还是经典的自定义排序。
- #include<iostream>
- #include<vector>
- #include<stdlib.h>
- #include<algorithm>
- #include<string.h>
- #include<exception>
- #include<map>
- #include<cmath>
- #include<unordered_map>
- #include<numeric>
- #include<set>
- #include<climits>
- #include<ctype.h>
- #include<queue>
- #include<stack>
- #include<list>
- #include<bitset>
- #include <regex>
- using namespace std;
-
- vector<int> split(string params_str) {
- vector<int> p;
- while (params_str.find(" ") != string::npos) {
- int found = params_str.find(" ");
- p.push_back(stoi(params_str.substr(0, found)));
- params_str = params_str.substr(found + 1);
- }
- p.push_back(stoi(params_str));
- return p;
- }
-
- vector<string> split_str(string params_str) {
- vector<string> p;
- while (params_str.find(",") != string::npos) {
- int found = params_str.find(",");
- p.push_back(params_str.substr(0, found));
- params_str = params_str.substr(found + 1);
- }
- p.push_back(params_str);
- return p;
- }
-
- bool comp(vector<int> a, vector<int> b){
- return a[1] < b[1];
- }
-
- bool comp1(vector<int> a, vector<int> b){
- return a[0] < b[0];
- }
-
- int main()
- {
- int count;
- cin >> count;
-
- vector<vector<int>> all_employee;
- vector<vector<int>> pairs;
- //最大差就是300
- int min_val = 300;
-
- for(int i=0; i<count; i++){
- int a,b;
- cin >> a >> b;
- vector<int> temp;
- temp.push_back(a);
- temp.push_back(b);
- all_employee.push_back(temp);
- }
- //按照分数
- sort(all_employee.begin(), all_employee.end(), comp);
-
- int i=1;
- while(true){
- if(i>=count){
- sort(pairs.begin(), pairs.end(), comp1);
- string output_str = "";
- for (int j=0;j<pairs.size();j++){
- cout<<pairs[j][0] << " " << pairs[j][1] <<endl;
- }
- break;
- } else {
- int temp = all_employee[i][1] - all_employee[i-1][1];
- if(min_val>temp){
- min_val = temp;
- pairs.clear();
- vector<int> new_vec;
- new_vec.push_back(all_employee[i-1][0]);
- new_vec.push_back(all_employee[i][0]);
- pairs.push_back(new_vec);
- } else if(min_val == temp){
- vector<int> new_vec;
- new_vec.push_back(all_employee[i-1][0]);
- new_vec.push_back(all_employee[i][0]);
- pairs.push_back(new_vec);
- } else {
- min_val = min_val;
- }
- }
- i+=1;
- }
-
- return 0;
- }
【华为od机试真题Python+JS+Java合集】【超值优惠】:Py/JS/Java合集
【华为od机试真题Python】:Python真题题库
【华为od机试真题JavaScript】:JavaScript真题题库
【华为od机试真题Java】:Java真题题库
【华为od机试真题C++】:C++真题题库
【华为od机试真题C语言】:C语言真题题库
【华为od面试手撕代码题库】:面试手撕代码题库
【华为od机试面试交流群:830285880】
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。