原题链接:https://vjudge.net/problem/UVA-1622
分类:构造法
备注:思维题
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll kase,r,c,N,S,W,E;
ll solve(ll r,ll c,ll N,ll S,ll W,ll E){
ll res=0;
if(S>N)swap(S,N);
if(E>W)swap(W,E);
if(N){
res+=r*c;
N--; r--;
if(N>=S){
res+=r*c*S*2;
N-=S;
}else{
res+=r*c*(S*2-1);
N=0;
}
S=0;
}
if(W){
W-=E;
if(W){
E*=2; W--;
}else{
E=E*2-1;
}
while((1-c)*E>=c-r&&N){//先走一步N结果更优
res+=r*c;
N--; r--;
}
res+=c*r;
c--;
res+=r*c*E;
E=0;
}
while(r*c>0&&N+W>0){
res+=r*c;
if((r>c&&N)||!W){
N--; r--;
}
else{
W--; c--;
}
}
return res;
}
int main(){
// freopen("in.txt","r",stdin);
// freopen("out.txt","w",stdout);
while( scanf("%lld%lld",&r,&c)&&r){
scanf("%lld%lld%lld%lld",&N,&S,&W,&E);
ll ans=max(solve(r,c,N,S,W,E),solve(c,r,E,W,N,S));
printf("Case %lld: %lld\n",++kase,ans);
}
}