70pts WA求调——教
查看原帖
70pts WA求调——教
1632799
QuakeHearts楼主2025/1/21 23:16

rt

#include<bits/stdc++.h>
using namespace std;

#define N 100010

int n,z;
int d[N],a[N];
int adans,mians;

struct node{
	int id,a,b;				//用b表示d 
}ad[N],mi[N];

bool cmp1(node a,node b){
	return a.a>b.a;
}
bool cmp2(node a,node b){
	return a.b>b.b;
}

signed main(){
	ios::sync_with_stdio(false);
	cin.tie(0);
	
	cin >> n >> z;
	for (int i = 1; i <= n; i++){
		cin >> d[i] >> a[i];
		if (a[i] >= d[i])
			ad[++adans] = (node){i, a[i], d[i]};
		else
			mi[++mians] = (node){i, a[i], d[i]};
	}	
	
	sort(mi + 1, mi + mians + 1, cmp1);
	sort(ad + 1, ad + adans + 1, cmp2);
	
	for (int i=1;i<=adans;++i){
		if (ad[i].b >= z){
			cout << "NIE";
			return 0;
		} else {
			z=z-ad[i].b+ad[i].a;
		}
	}
	for (int i=1;i<=mians;++i){
		if (mi[i].b >= z){
			cout << "NIE";
			return 0;
		} else {
			z=z-mi[i].b+mi[i].a;
		}
	}
	
	cout << "TAK\n";
	for (int i=1;i<=adans;++i)	cout << ad[i].id<< " ";
	for (int i=1;i<=mians;++i)	cout << mi[i].id<< " ";
	
	return 0;
}
2025/1/21 23:16
加载中...