水题都错了,因为以为先尽量让第三大,其实是第一。看错题目。
#include<stdio.h>
int main()
{
int n;
int min1,min2,min3,max1,max2,max3;
int r1,r2,r3;
scanf("%d",&n);
scanf("%d%d",&min1,&max1);
scanf("%d%d",&min2,&max2);
scanf("%d%d",&min3,&max3);
r1=min1;
r2=min2;
r3=min3;
n-=(r1+r2+r3);
if(n>(max1-min1))
{
n-=(max1-min1);
r1=max1;
if(n>(max2-min2))
{
n-=(max2-min2);
r2=max2;
if(n>(max3-min3))
{
n-=(max3-min3);
r3=max3;
}
else r3+=n;
}
else r2+=n;
}
else r1+=n;
printf("%d %d %d\n",r1,r2,r3);
}