题目描述
给定4个整数:a,b,x,y。刚开始a>=x,b>=y。你可以做如下操作不超过n次:
每次你可以选择a或者b,然后让它的值减少1;不过你要保证本次操作之后a的值不能小于x且b的值不能小于y。
问最多n次操作之后,a*b的最小值是多少?
输入格式
多组测试数据。
第一行,一个整数T,表示有T组测试数据。1<=T<=20000。
接下来有T行,每行5个整数:a,b,x,y,n。1<=a,b,x,y,n<=10^9。
输出格式
共T行,每行一个整数。
输入/输出例子1
输入:
7
10 10 8 5 3
12 8 8 7 2
12343 43 4543 39 123212
1000000000 1000000000 1 1 1
1000000000 1000000000 1 1 1000000000
10 11 2 1 5
10 11 9 1 10
输出:
70
77
177177
999999999000000000
999999999
55
10
My answer:
#include<bits/stdc++.h>
using namespace std;
int n;
long long a,b,x,y,m,c,d,a1,b1,m1;
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a>>b>>x>>y>>m;
a1=a,b1=b,m1=m;
if(a-x<m)
{
m-=a-x;
a=x;
}
else
{
a-=m;
m=0;
}
if(b-y<m)b=y;
else b-=m;
if(b1-y<=m1)
{
m1-=b1-y;
b1=y;
}
else
{
b1-=m1;
m1=0;
}
if(a1-x<m1)a1=x;
else a1-=m1;
c=a*b;
d=a1*b1;
if(d<c)cout<<d;
else cout<<c;
if(i!=n)cout<<endl;
}
return 0;
}