Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<stdlib.h>
- void heapify(int* v, int n, int i){
- int menor, aux;
- while(i<=n/2){
- printf("Aquii\n");
- if(i<n/2){
- printf("Aqui\n");
- if(v[2*i]<v[2*i+1]){
- menor=2*i;
- } else{
- menor=2*i+1;
- }
- } else{
- menor=2*i;
- }
- if(v[i]>v[menor]){
- aux=v[i];
- v[i]=v[menor];
- v[menor]=aux;
- i=menor;
- } else{
- i=n;
- }
- }
- }
- void constroiHeap(int* v, int n){
- int i;
- for(i=n/2;i>=1;i--){
- heapify(v, n, i);
- }
- }
- void heapsort(int* v, int n){
- int j, aux;
- constroiHeap(v, n);
- for(j=n;j>=2;j--){
- aux=v[j];
- v[j]=v[1];
- v[1]=aux;
- heapify(v, j-1, 1);
- }
- }
- int comparar (const void * a, const void * b)
- {
- return ( *(int*)b - *(int*)a);
- }
- int main(){
- int t,n,j, i;
- int aux;
- int v[100000];
- scanf("%d", &t);
- for(i=0;i<t;i++){
- scanf("%d", &n);
- for(j=0;j<n;j++){
- scanf("%d", &v[j]);
- }
- /*heapsort(v, n);
- if(v[n]==1 || v[n]==2 || v[n]==3){
- if(v[n]==1){
- n1=n;
- if(v[n-1]==2||v[n-1]==3){
- if(v[n-1]==2){
- n2=n-1;
- if(v[n-2]==3){
- n3=n-2;
- }
- } else{
- n3=n-2;
- }
- }
- } else{
- if(v[n]==2){
- n2=n;
- if(v[n-1]==3){
- n3=n-1;
- }
- } else{
- n3=n;
- }
- }
- }*/
- qsort(v,n,sizeof(int),comparar);
- if(v[n-1]==1){
- printf("%d", v[n-1]);
- n--;
- }
- while(v[n-1]==1&&n>0){
- printf(" %d", v[n-1]);
- n--;
- }
- if(n==2&&v[n-1]==2&&v[n-2]==3){
- aux=v[n-1];
- v[n-1]=v[n-2];
- v[n-2]=aux;
- }
- /*if(n>0){
- printf("%d", v[0]);
- }*/
- for(j=0;j<n;j++){
- printf(" %d", v[j]);
- }
- printf("\n");
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement