bzoj 3709: [PA2014]Bohater 贪心

code: 

#include <bits/stdc++.h> 
#define N 100005 
#define LL long long 
using namespace std; 
void setIO(string s) 
{
    string in=s+".in"; 
    freopen(in.c_str(),"r",stdin);       
}
struct data 
{      
    LL a,d; 
    int id; 
    data(LL a=0,LL d=0,int id=0):a(a),d(d),id(id){}   
}a[N],b[N];    
bool cmp1(data a,data b) 
{
    return a.a<b.a; 
}      
bool cmp2(data a,data b) 
{
    return a.d>b.d;                                      
}
int main() 
{ 
    // setIO("input");  
    int n,i,j,t1=0,t2=0;  
    LL z; 
    scanf("%d%lld",&n,&z);      
    for(i=1;i<=n;++i)       
    {
        LL x,y; 
        scanf("%lld%lld",&x,&y);      
        if(y>=x) a[++t1]=data(x,y,i);   
        else b[++t2]=data(x,y,i);   
    }
    sort(a+1,a+1+t1,cmp1); 
    sort(b+1,b+1+t2,cmp2);  
    for(i=1;i<=t1;++i) 
    {
        if(z<=a[i].a) 
        { 
            printf("NIE\n"); 
            return 0; 
        }
        else 
        {
            z+=a[i].d-a[i].a; 
        }
    }
    for(i=1;i<=t2;++i) 
    {
        if(z<=b[i].a) 
        {
            printf("NIE\n"); 
            return 0; 
        }
        else 
        {
            z+=b[i].d-b[i].a;   
        }
    }
    printf("TAK\n");   
    for(i=1;i<=t1;++i) printf("%d ",a[i].id);  
    for(i=1;i<=t2;++i) printf("%d ",b[i].id);   
    return 0; 
}

  

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值