Advertisement
Guest User

Untitled

a guest
Jun 30th, 2016
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.70 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. const int N = 1000010;
  4.  
  5. int test,n,m,p,q;
  6. long long s,ans,ss,k,z,tmp;
  7.  
  8. bool check(long long x,long long y,long long k){
  9. if (x>m||y>n) return 0;
  10. long long z=k-x-y*m+1+m;
  11. if (z&1LL) return 0;
  12. z/=2LL;
  13. if (z>1LL*n*m-1) return 0;
  14. int p,q;
  15. q=z%m;
  16. p=z/m;
  17. if (p+y<=n&&q+x<=m) return 1;
  18. return 0;
  19. }
  20. vector<long long> us;
  21. long long fa[N];
  22. int fb[N];
  23. int na = 0;
  24. void dfs(long long a, long long b, long long c), long long value) {
  25. if (a * b * c == value) {
  26. if (check(a, b, c))
  27. return ;
  28. }
  29. }
  30. int main(){
  31. scanf("%d",&test);
  32. while (test--){
  33. scanf("%d%d%I64d",&n,&m,&s);
  34. ans=1e15;
  35. s*=2LL;
  36. us.clear();
  37. na = 0;
  38. for (int i = 1;(long long)i * i <= s ; ++i)
  39. if (s % i == 0) {
  40. fa[na] =
  41.  
  42. na++;
  43. }
  44. int sm = (int)us.size();
  45. for (int pi = 0; pi < sm; ++ pi){
  46. long long i = us[pi];
  47. ss=s/i;
  48. for (int pj=0; pj < sm; ++pj){
  49. long long j = us[pj];
  50. if (ss%j==0){
  51. k=ss/j;
  52. if (check(i,j,k)) ans=min(ans,1LL*i*j);
  53. if (check(j,i,k)) ans=min(ans,1LL*i*j);
  54. if (check(k,i,j)) ans=min(ans,1LL*i*k);
  55. if (check(i,k,j)) ans=min(ans,1LL*i*k);
  56. if (check(j,k,i)) ans=min(ans,1LL*k*j);
  57. if (check(k,j,i)) ans=min(ans,1LL*k*j);
  58. }
  59. }
  60. }
  61. if (ans==1e15) ans=-1;
  62. printf("%I64d\n",ans);
  63.  
  64. }
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement