/*
留心小于1且斜放的情况
*/
#include <iostream>
#include <cmath>
#define eps 1e-6
using namespace std;
double sin60 = sqrt(3.0) / 2;
int cal_skew(double a, double b)
{
int x, xx, y;
int skew;
if (a - 1 < -eps || b - 1 < -eps)
return 0;
y = (int)((b - 1) / sin60 + eps) + 1;
x = (int)a;
xx = (int)(a - 0.5 + eps);
if (x == xx)
{
skew = x * y;
}
else
{
if (y % 2 == 0)
skew = (x * 2 - 1) * (y / 2);
else
skew = (x * 2 - 1) * ((y+1) / 2) - (x - 1);
}
return skew;
}
int cal_grid(double a, double b)
{
return (int)a * (int)b;
}
int main()
{
double a, b;
int grid, skew, skew1, skew2;
while (scanf("%lf %lf", &a, &b) != EOF)
{
skew1 = cal_skew(a, b);
skew2 = cal_skew(b, a);
skew = max(skew1, skew2);
grid = cal_grid(a, b);
if (grid >= skew)
printf("%d grid\n", grid);
else
printf("%d skew\n", skew);
}
return 0;
}
留心小于1且斜放的情况
*/
#include <iostream>
#include <cmath>
#define eps 1e-6
using namespace std;
double sin60 = sqrt(3.0) / 2;
int cal_skew(double a, double b)
{
int x, xx, y;
int skew;
if (a - 1 < -eps || b - 1 < -eps)
return 0;
y = (int)((b - 1) / sin60 + eps) + 1;
x = (int)a;
xx = (int)(a - 0.5 + eps);
if (x == xx)
{
skew = x * y;
}
else
{
if (y % 2 == 0)
skew = (x * 2 - 1) * (y / 2);
else
skew = (x * 2 - 1) * ((y+1) / 2) - (x - 1);
}
return skew;
}
int cal_grid(double a, double b)
{
return (int)a * (int)b;
}
int main()
{
double a, b;
int grid, skew, skew1, skew2;
while (scanf("%lf %lf", &a, &b) != EOF)
{
skew1 = cal_skew(a, b);
skew2 = cal_skew(b, a);
skew = max(skew1, skew2);
grid = cal_grid(a, b);
if (grid >= skew)
printf("%d grid\n", grid);
else
printf("%d skew\n", skew);
}
return 0;
}