cf 558A Lala Land and Apple Trees

#include<stdio.h>
#include<algorithm>
#include<string.h>
using namespace std;

struct data
{
    int x;
    int a;
};
data l[1024],r[1024];
bool c1(data q,data p)
{
    return q.x<p.x;
}

bool c2(data q,data p)
{
    return q.x>p.x;
}

int main()
{
    int n,i,t,p,ans1,ans2,p1,p2;
    while(~scanf("%d\n",&n))
    {
        p1=p2=0;
        for(i=0;i<n;i++)
        {
            scanf("%d%d",&t,&p);
            if(t>0)
            {
                r[p2].x=t;
                r[p2].a=p;
                p2++;
            }
            else
            {
                l[p1].x=t;
                l[p1].a=p;
                p1++;
            }

        }
        sort(l,l+p1,c2);
        sort(r,r+p2,c1);
        int u1[1024],u2[1024];
        memset(u1,0,sizeof(u1));
        memset(u2,0,sizeof(u2));
        for(ans1=0,i=0;;i++)
        {
            if(i%2==0)
            {
                if(i/2>=p1) break;
                ans1+=l[i/2].a;
            }
            else
            {
                if(i/2>=p2) break;
                ans1+=r[i/2].a;
            }
        }
        for(ans2=0,i=0;;i++)
        {
            if(i%2==1)
            {
                if(i/2>=p1) break;
                ans2+=l[i/2].a;
            }
            else
            {
                if(i/2>=p2) break;
                ans2+=r[i/2].a;
            }
        }
        printf("%d\n",max(ans1,ans2));
    }
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值