和小朋友吵架,求助关于vector
  • 板块学术版
  • 楼主__er
  • 当前回复21
  • 已保存回复21
  • 发布时间2022/12/7 21:41
  • 上次更新2023/10/27 00:10:35
查看原帖
和小朋友吵架,求助关于vector
713955
__er楼主2022/12/7 21:41

rt,和小朋友吵架说我用vector甩他100ms(我们用的OJ只能手动O2,O3)

结果小朋友用数组+快读,不过思路不是很清晰,但是我只领先了97ms……

题目大意是给定 nnnn 个数,按绝对值排序,如果绝对值相等就先输出原来小的

0 作为结束符

有无除了指令集以外打爆他的方法

#include <bits/stdc++.h>
#define JS ios::sync_with_stdio(false),cin.tie(nullptr),cout.tie(nullptr)
using namespace std;
vector<pair<int, int>> v;

bool cmp(pair<int, int> x, pair<int, int> y) {
	if (x.first > y.first ) {
		return true;
	}
	if (x.first == y.first && x.second < y.second ) {
		return true;
	}
	return false;
}
int n;

int main() {
	JS;
	while (cin >> n && n != 0) {
		int t;
		for (int i = 1; i <= n; i++) {
			cin >> t;
			v.push_back(make_pair(abs(t), t));
		}
		sort(v.begin(), v.end(), cmp);
		for (auto i : v) {
			cout << i.second << " ";
		}
		cout << '\n', v.clear();
	}
	return 0;
}

有点颜面扫地……

2022/12/7 21:41
加载中...