30分求Hack
  • 板块P7107 天选之人
  • 楼主WsW_花逝爆零人
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/7/23 12:01
  • 上次更新2023/11/3 08:07:35
查看原帖
30分求Hack
349824
WsW_花逝爆零人楼主2023/7/23 12:01
#include<bits/stdc++.h>
using namespace std;
int n,m,k,p;
int x1,x2;
int main(){
	scanf("%d%d%d%d",&n,&m,&k,&p);
	if(n==p){//每个人都去 
		if(k%p)printf("No");//分不匀 
		else{//分得匀 
			puts("Yes");
			for(int i=1;i<=p;i++){
				printf("%d %d\n",k/p,m-k/p);
			}
		}
		return 0;
	}
	
	x1=min(k/p,m);//要去的每人拿多少 
	k-=x1*p;//剩下多少 
	x2=ceil(double(k)/(n-p));//其他人最多的会拿到多少 
	
	if(x1<=x2)return !printf("No");
	puts("Yes");
	for(int i=1;i<=p;++i)printf("%d %d\n",x1,m-x1);//要去的 
	for(int i=1;i<=n-p;++i){//不要去的 
		if(x2<=k){//尽量多拿 
			printf("%d %d\n",x2,m-x2);
			k-=x2;
		}
		else{
			printf("%d %d\n",k,m-k);
			k=0;
		}
	}
	return 0;
}
2023/7/23 12:01
加载中...