ソートダウン----------------------
9009 ワード
ここをクリックして杭電の上のテスト問題に入りますここをクリックして厦大のテスト問題に入ります
杭電の問題はヒルソート+Hibbard増分シーケンスでは通れない.コードは以下の通りです(テストなので少し乱れています)
しかし、急速に水を並べ替えた.
これはstlの速いソートの他の人のコード//私はまだ見ていないで後で再び書きます.
ビルの大きいヒルと速い列については
杭電の問題はヒルソート+Hibbard増分シーケンスでは通れない.コードは以下の通りです(テストなので少し乱れています)
1 #include<stdio.h> // /
2 #include<algorithm>
3 using namespace std;
4 int a[1000011],i,j,m,n,t,d,p,q,tmp;
5 int main()
6 {
7 while(scanf("%d%d",&t,&q)!=EOF)
8 {
9 for(i=0;i<t;i++)
10 scanf("%d",&a[i]);
11 for(d=(t/2)-1;d>0;d=d/2) // n/2 d d=1
12 {
13 for(p=d;p<t;p++) // .
14 {
15 tmp=a[p];
16 for(i=p;i>=d&&a[i-d]<tmp;i=i-d)
17 {
18 a[i]=a[i-d];
19 }
20 a[i]=tmp;
21 }
22 }
23 for(i=0;i<t-1;i++)
24 printf("%d ",a[i]);
25 printf("%d
",a[t-1]);
26 }
27 }
しかし、急速に水を並べ替えた.
1 // , 904 .
2 #include<stdio.h>
3 #include<algorithm>
4 using namespace std;
5 int a[1000011],i,j,m,n,t,d,p,q,tmp;
6 int main()
7 {
8 while(scanf("%d%d",&t,&q)!=EOF)
9 {
10 for(i=0;i<t;i++)
11 scanf("%d",&a[i]);
12 sort(a,a+t);
13 for(i=t-1;i>t-q;i--)
14 printf("%d ",a[i]);
15 printf("%d
",a[t-q]);
16 }
17 }
これはstlの速いソートの他の人のコード//私はまだ見ていないで後で再び書きます.
1 #include <stdio.h>
2 #include <algorithm>
3
4 using namespace std;
5
6 static int a[1000000];
7
8 int main()
9 {
10 int i,n,m;
11 while(EOF != scanf("%d %d",&n,&m))
12 {
13 for(i=0;i<n;i++)
14 scanf("%d",&a[i]);
15 make_heap(a,a+n);
16 printf("%d",a[0]);
17 for(i=1;i<m;i++)
18 {
19 pop_heap(a,a+n-i+1);
20 printf(" %d",a[0]);
21 }
22 printf("
");
23 }
24 return 0;
25 }
ビルの大きいヒルと速い列については
1 #include<stdio.h>
2 #include<algorithm>
3 using namespace std;
4 int a[1000011],i,j,m,n,t,d,p,tmp;
5 int main()
6 {
7 while(scanf("%d",&t)!=EOF)
8 {
9 for(i=0;i<t;i++)
10 scanf("%d",&a[i]);
11 for(d=(t/2)-1;d>0;d=d/2) // n/2 d d=1
12 {
13 for(p=d;p<t;p++) // .
14 {
15 tmp=a[p];
16 for(i=p;i>=d&&a[i-d]>tmp;i=i-d)
17 {
18 a[i]=a[i-d];
19 }
20 a[i]=tmp;
21 }
22 }
23 for(i=0;i<t-1;i++)
24 printf("%d ",a[i]);
25 printf("%d
",a[t-1]);
26 }
27 }
28 /**************************************************************
29 Problem: 1004
30 User: xpower
31 Language: C++
32 Result: Accepted
33 Time:700 ms
34 Memory:4940 kb
35 ****************************************************************/
#include<stdio.h>
#include<algorithm>
using namespace std;
int a[1000011],i,j,m,n,t;
int main()
{
while(scanf("%d",&t)!=EOF)
{
for(i=0;i<t;i++)
scanf("%d",&a[i]);
sort(a,a+t);
for(i=0;i<t-1;i++)
printf("%d ",a[i]);
printf("%d
",a[t-1]);
}
}
/**************************************************************
Problem: 1004
User: xpower
Language: C++
Result: Accepted
Time:508 ms
Memory:4944 kb
****************************************************************/