T2&1求调
查看原帖
T2&1求调
803329
chenxuanling楼主2024/11/24 14:11
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e6+10;
ll n,m,k,T;
struct node{
	ll l,r,id;
}e[N];
inline void p(){
	cout<<"Yes\n";
	for(int i=1;i<=n;i++)cout<<e[i].l<<" ";
	cout<<"\n";
}
inline bool cmp(node a,node b){
	return a.r-a.l<b.r-b.l;
}
inline bool dmp(node a,node b){
	return a.id<b.id;
}
signed main(){
	cin.tie(0),cout.tie(0);
	cin>>T;
	while(T--){
		cin>>n>>k;
		ll mn=INT_MAX;
		bool op=0;
		for(int i=1;i<=n;i++){
			cin>>e[i].l>>e[i].r;
			mn=min(mn,e[i].r);
			if(e[i].r<k){
				op=1;
			} 
			e[i].id=i;
		} 
		if(op){
			cout<<"No\n";
			continue;
		}
		if(k==1){p();continue;}
		sort(e+1,e+n+1,cmp);
		for(int i=k;;i++){
			op=0;
			if(i>mn){
				cout<<"No\n";
				break;
			}
			for(int j=1;j<=n;j++){
				if((e[j].r/i*i>=e[j].l&&e[j].r/i*i<=e[j].r)||(e[j].l/i*i>=e[j].l&&e[j].l/i*i<=e[j].r)){
					continue;
				}	
				else{
					op=1;
					break;
				}
			}
			if(op==1){
				continue;
			}
			if(op==0){
				cout<<"Yes\n";
				sort(e+1,e+n+1,dmp);
				for(int j=1;j<=n;j++){
					if(e[j].l/i*i>=e[j].l&&e[j].l/i*i<=e[j].r){
						cout<<e[j].l/i*i<<" ";
						continue;
					}		
					else{
						cout<<e[j].r/i*i<<" ";
						continue;
					}
				}
				cout<<"\n";
				break;
			}		
		}
	}
	return 0;
}

2024/11/24 14:11
加载中...