/*
a1 + b1 = a2 + b2 + c
a2 + b2 = a1 + b1 - c
所以a2和b2的和是一定的 就要使得a2和b2的差最大
所以就要去找一个极限的满足条件的最小值 无论之前他们的相对大小如何
*/
#include<iostream>
using namespace std;
int n;
int main(void)
{
cin >> n;
for(int i = 0;i < n;i++)
{
long long int a,b,x,y,c;
cin >> a >> b >> x >> y >> c;
// 10 11 9 1 10
int M1 = max(x,a - c); // M1 = 9
int M2 = max(y,b - c); // M2 = 1
//最开始做这道题的时候,思路是先从最小的开始减,直到减到下界,就换另外一个数进行减法,或者减数用完,就在较小的数字上使用所用的减数,但是最后一个sample会错误
// 在考虑到下界的时候,算出a和b所能取到的最小值 (让一个数字可以尽可能地小) 将一个数字减到极限最小 无论这两个数字之前的相对大小
if(M1 >= M2) // M2 < M1 先减B
{
int cnt = min(c,b - y);
b -= cnt;
c -= cnt;
cnt = min(c,a - x);
a -= cnt;
}
else
{
int cnt = min(c,a - x);
a -= cnt;
c -= cnt;
cnt = min(c,b - y);
b -= cnt;
}
cout<< a * b << endl;
}
return 0;
}
CF div3_B
最新推荐文章于 2024-03-12 11:48:40 发布