Cod sursa(job #2601340)

Utilizator MiricaMateiMirica Matei MiricaMatei Data 14 aprilie 2020 12:52:56
Problema Dreptunghiuri Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <bits/stdc++.h>

using namespace std;

int solve(int h, int w, int a) {
  int delta = w * w - 4 * a * (h - a);
  if (delta < 0)
    return 0;
  int rad = (int)sqrt((double)delta);
  if (rad * rad != delta)
    return 0;
  if ((w + rad) % 2 != 0)
    return 0;
  int ans = 0;
  if (0 <= (w + rad) / 2 && (w + rad) / 2 < w)
    ans++;
  if (0 <= (w - rad) / 2 && (w - rad) / 2 < w && rad != 0)
    ans++;
  return ans;
}

int main() {
  freopen("dreptunghiuri.in", "r", stdin);
  freopen("dreptunghiuri.out", "w", stdout);

  int n, m;
  scanf("%d%d", &n, &m);
  long long ans = 0;
  for (int h = 1; h < n; ++h)
    for (int w = 1; w < m; ++w)
      for (int a = 0; a < h; ++a)
        ans += (n - h) * (m - w) * solve(h, w, a);

  printf("%lld\n", ans);

  return 0;
}