Problem G. Garage
Input file: garage.in
Output file: garage.out
Time limit: 2 seconds
Memory limit: 256 megabytes
Wow! What a lucky day! Your company has just won a social contract for building a garage complex.
Almost all formalities are done: contract payment is already transferred to your account.
So now it is the right time to read the contract. Okay, there is a sandlot in the form of W × H rectangle
and you have to place some garages there. Garages are w × h rectangles and their edges must be parallel
to the corresponding edges of the sandlot (you may not rotate garages, even by 90◦
). The coordinates of
garages may be non-integer.
You know that the economy must be economical, so you decided to place as few garages as possible.
Unfortunately, there is an opposite requirement in the contract: placing maximum possible number of
garages.
Now let’s see how these requirements are checked… The plan is accepted if it is impossible to add a new
garage without moving the other garages (the new garage must also have edges parallel to corresponding
sandlot edges).
Time is money, find the minimal number of garages that must be ordered, so that you can place them
on the sandlot and there is no place for an extra garage.
Input
The only line contains four integers: W, H, w, h — dimensions of sandlot and garage in meters. You may
assume that 1 ≤ w ≤ W ≤ 30 000 and 1 ≤ h ≤ H ≤ 30 000.
Output
Output the optimal number of garages.
Examples
garage.in garage.out
11 4 3 2 2
10 8 3 4 2
15 7 4 2 4
The plan on the first picture is accepted and optimal for the first example. Note that a rotated (2 × 3)
garage could be placed on the sandlot, but it is prohibited by the contract.
题意:问能放几个停车位将沙地占满,使得所放的停车位最少。
代码:
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <iostream>
using namespace std;
int main (void)
{
//freopen
//freopen
int X,Y,x,y;
scanf("%d %d %d %d",&X,&Y,&x,&y);
int xx,yy;
xx=2*x;
yy=2*y;
int cntx=X/xx;
int cnty=Y/yy;
// printf("%d %d__\n",cntx,cnty);
if(X%xx>=x)
cntx++;
// printf("cntx=%d\n",cntx);
if(Y%yy>=y)
cnty++;
// printf("cnty=%d\n",cnty);
printf("%d\n",cntx*cnty);
return 0;
}