Advertisement
Guest User

Untitled

a guest
Jun 24th, 2018
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.31 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int main(){
  4. int T,n;
  5. long long in,start,n3;
  6. map<long long,int> num;
  7. map<long long,int>::iterator it;
  8. vector<long long> ans;
  9. scanf("%d",&T);
  10. for(int p = 0 ; p < T ; p++){
  11. scanf("%d",&n);
  12. n3 = n * n * n;
  13. for(int o = 0 ; o < n3 ; o++){
  14. scanf("%lld",&in);
  15. num[in]++;
  16. }
  17. start = num.begin() -> first;
  18. ans.push_back((long long)cbrt((long double)start));
  19. num[start]--;
  20. if(num.begin()->second==0)num.erase(num.begin());
  21. while(num.size()!=0){
  22. start = num.begin() -> first/ans[0]/ans[0];
  23. ans.push_back(start);
  24. for(int i = 0 ; i < ans.size() - 1; i++)
  25. for(int j = 0 ; j < ans.size() ; j++){
  26. it = num.find(start * ans[i] * ans[j]);
  27. it -> second -= 3;
  28. if(it -> second ==0)
  29. num.erase(it);
  30. }
  31. it = num.find(start * start * start);
  32. it -> second --;
  33. if(it -> second ==0)
  34. num.erase(it);
  35. }
  36. for(int i = 0 ; i < ans.size() ; i++)
  37. printf("%lld ",ans[i]);
  38. printf("\n");
  39. ans.clear();
  40. }
  41. return 0;
  42. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement