A-codeforces558A

题目链接:Codeforces558A


水题,第一次运行超时,用结构体快排。

不知道为什么不能一起算,要正负分开算,不然超时。




#define _CRT_SECURE_NO_DEPRECATE
#include<stdio.h>
#include<algorithm>
#include<cstring>
using namespace std;
struct node{
	int x, a;
}nor[105], nol[105];
bool cmpr(const node &a, const node &b){
	return a.x < b.x;
}
bool cmpl(const node &a, const node &b){
	return a.x > b.x;
}
int main(){
	int n;
	while (scanf("%d", &n) != EOF){
		int ans = 0;
		int aa, b;
		int r = 0, l = 0;
		for (int i = 0; i < n; i++){
			scanf("%d %d", &aa, &b);
			if (aa > 0){
				nor[r].x = aa;
				nor[r].a = b;
				r++;
			}
			else{
				nol[l].x = aa;
				nol[l].a = b;
				l++;
			}
		}
		sort(nor, nor + r, cmpr);
		sort(nol, nol + l, cmpl);
		if (l == 0)
			ans = nor[0].a;
		else if (r == 0)
			ans = nol[0].a;
		else {
			int pl = 0, pr = 0;
			if (l > r){
				while (1){
					ans += nol[pl++].a;
					if (pr == r)
						break;
					ans += nor[pr++].a;
					if (pl == l)
						break;
				}
			}
			else{
				while (1){
					ans += nor[pr++].a;
					if (pl == l)
						break;
					ans += nol[pl++].a;
					if (pr == r)
						break;
				}
			}
		}
		printf("%d\n", ans);
	}
	return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值