题意:n*m的矩形,(x,y)不可用,将其分成若干个小矩形,要求分成的矩形面积最小,输出其中最大的面积值(还是看原题吧,我说的挺混乱的),有一个要求,每个小矩形一定要与大矩形的外边相连。
思路:肯定是分成1*a , b*1的矩形,考虑三种情况就可以了
代码如下:
#include<cstdio>
#include<cstring>
#include<cmath>
#include<string>
#include<iostream>
#include<algorithm>
#include<map>
using namespace std;
typedef long long ll;
const int N = 1e5+10;
const int INF = 1e9+7;
int n, m, x, y;
int main()
{
while(~scanf("%d%d%d%d", &n, &m, &x, &y))
{
if(n > m)
swap(n, m), swap(x, y);
int cnt = (n+1)/2;
if(n%2 && n == m && x == y && x == cnt)
{
printf("%d\n", cnt-1);
continue;
}
int l, r, u, d;
int ans;
l = y, r = m-y+1;
if(x < cnt)
{
d = n-x;
ans = max(min(d, min(l,r)), cnt);
}
else if(x > cnt+1)
{
u = x-1;
ans = max(min(u, min(l, r)), cnt);
}
else ans = cnt;
printf("%d\n", ans);
}
return 0;
}