Result: Accepted
Time: 134ms
Memory: 1756kB
#include <iostream>
#include <algorithm>
#include <cstdlib>
#include <ctime>
#include <vector>
#include <set>
#include <string>
#include <map>
#include <queue>
#include <stack>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <deque>
#define clr(a,b) memset(a,b,sizeof(a))
#define ll long long
using namespace std;
const int maxn=1e4+10;
int a,b,c,d,e;
int main()
{
while(scanf("%d %d %d %d %d",&a,&b,&c,&d,&e)!=EOF)
{
int vall=a*b*c,ans;
int a1=0;
//e<min(a,b,c)/2-->当b最小时2*d>=b为挖穿-->d>=e(d==e刚挖穿可能有一块剩下,所以应为d>e)
if(e>d)
{
ans=vall-2*d*(a-2*e)*(c-2*e)-2*d*(b-2*e)*(c-2*e)-2*d*(a-2*e)*(b-2*e);//剩下的
}
else
{
a1=(a-2*d)*(b-2*d)*(c-2*d);
ans=4*e*(a-2*e)*e+4*e*(b-2*e)*e+4*c*e*e;//剩下的
}
ans=max(ans,a1);
cout<<ans<<endl;
}
}