HDU1031 Design T-Shirt (二级排序)

二级排序,快排

 1 #include<stdio.h>
 2 #include<string.h>
 3 double a[10010];
 4 int b[10010];
 5 void quicksort(double a[],int low,int high)
 6 {
 7     int i=low;
 8     int j=high;
 9     double temp=a[i];
10     int temp2=b[i]; 
11     if(i<j)
12     {
13         while(i<j)
14         {
15             while(a[j]<=temp&&i<j) j--;                             
16             a[i]=a[j];
17             b[i]=b[j];
18             while(a[i]>=temp&&i<j) i++;
19             a[j]=a[i];
20             b[j]=b[i];
21         } 
22         a[i]=temp;
23         b[i]=temp2;
24         quicksort(a,low,i-1);
25         quicksort(a,j+1,high);
26     }
27     else return;   
28 }
29 void quicksort2(int b[],int low,int high)
30 {
31     int i=low;
32     int j=high;
33     int temp=b[i]; 
34     if(i<j)
35     {
36         while(i<j)
37         {
38             while(b[j]<=temp&&i<j) j--;                             
39             b[i]=b[j];
40             while(b[i]>=temp&&i<j) i++;
41             b[j]=b[i];
42         } 
43         b[i]=temp;
44         quicksort2(b,low,i-1);
45         quicksort2(b,j+1,high);
46     }
47     else return;   
48 }
49 int main()
50 {
51     int n,m,k;
52     double temp;
53     while(scanf("%d %d %d",&n,&m,&k)!=EOF)
54     {
55         memset(a,0,sizeof(a));
56         memset(b,0,sizeof(b));
57         for(int i=0;i<n;i++)
58             for(int j=0;j<m;j++)
59             {
60                 scanf("%lf",&temp);  
61                 a[j]+=temp;     
62             }       
63         for(int i=0;i<m;i++)
64             b[i]=i+1; 
65         quicksort(a,0,m-1); 
66         quicksort2(b,0,k-1);
67         printf("%d",b[0]);
68         for(int i=1;i<k;i++)
69             printf(" %d",b[i]);  
70         printf("\n");     
71     }
72 }

 

posted on 2014-05-04 16:05  >_<  阅读(136)  评论(0编辑  收藏  举报

导航