RT,有几个点WA了,调了半天没调出来,貌似是无解的情况我找到了解,求助/kk
思路就是直接枚举每一种最大值,找到合理解就输出,感觉没问题啊QwQ
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
inline ll read(){
ll x=0;int f=1;char c=getchar();
while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}
while(c>='0'&&c<='9'){x=(x<<1)+(x<<3)+(c^48);c=getchar();}
return x*f;
}ll n,m,p,k;
int main(){
n=read(),m=read(),k=read(),p=read();
if(k==0){
if(p==n){puts("YES");for(int i=1;i<=n;i++)printf("0 %lld\n",m);}
else puts("NO");
return 0;
}
for(ll i=1;i*p<=k;i++){
if(i*p+(n-p)*(i-1)>=k){
puts("YES");
for(ll j=1;j<=p;j++)printf("%lld %lld\n",i,m-i);
k-=i*p;
for(ll j=p+1;j<=n;j++)
if(k>=i-1)printf("%lld %lld\n",i-1,m-i+1),k-=i-1;
else printf("%lld %lld\n",k,m-k),k=0;
return 0;
}
}puts("NO");
return 0;
}