Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- int main(){
- int T,n;
- long long in,start,n3;
- map<long long,int> num;
- map<long long,int>::iterator it;
- vector<long long> ans;
- scanf("%d",&T);
- for(int p = 0 ; p < T ; p++){
- scanf("%d",&n);
- n3 = n * n * n;
- for(int o = 0 ; o < n3 ; o++){
- scanf("%lld",&in);
- num[in]++;
- }
- start = num.begin() -> first;
- ans.push_back((long long)cbrt((long double)start));
- num[start]--;
- if(num.begin()->second==0)num.erase(num.begin());
- while(num.size()!=0){
- start = num.begin() -> first/ans[0]/ans[0];
- ans.push_back(start);
- for(int i = 0 ; i < ans.size() - 1; i++)
- for(int j = 0 ; j < ans.size() ; j++){
- it = num.find(start * ans[i] * ans[j]);
- it -> second -= 3;
- if(it -> second ==0)
- num.erase(it);
- }
- it = num.find(start * start * start);
- it -> second --;
- if(it -> second ==0)
- num.erase(it);
- }
- for(int i = 0 ; i < ans.size() ; i++)
- printf("%lld ",ans[i]);
- printf("\n");
- ans.clear();
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement