Un parc de formă dreptunghiulară este împărțit în n * m
sectoare, dispuse pe n
linii și m
coloane. Între oricare două sectoare învecinate, precum și pe exteriorul parcului sunt alei, ca în imaginea următoare (sectoarele sunt colorate cu verde, aleele cu gri):
Administrația parcului hotărăște angajarea unor paznici. Fiecare paznic va ocupa o poziție fixă pe o alee și va supraveghea sectoarele învecinate, ca mai jos. Astfel, un paznic poate supraveghea unul, două sau patru sectoare.
Cerința
Scrieți un program care citește n
și m
și determină numărul minim de paznici care trebuie angajați pentru a supraveghea parcul în aceste condiții.
Date de intrare
Programul citește de la tastatură numerele naturale nenule n m
.
Date de ieșire
Programul va afișa pe ecran numărul P
, reprezentând valoarea cerută.
Restricții și precizări
1 ≤ n, m ≤ 1 000 000
Exemplu
Intrare
2 2
Ieșire
1
Explicație
#include <bits/stdc++.h> using namespace std; int main() { int n , m; cin >> n >> m; if(n%2==1) n++; if(m%2==1) m++; cout << 1LL * (n / 2) * (m / 2); return 0; }