#6914: 測資 4, 6, 7 是什麼ㄚ? 我都過不了...


Flapy (Flapy)

學校 : 臺北市私立延平高級中學
編號 : 14321
來源 : [173.230.15.244]
最後登入時間 :
2018-05-25 14:51:09
d550. 物件排序 | From: [114.34.138.13] | 發表日期 : 2012-08-18 02:00

#include<iostream>
using namespace std;

int testSide(int *input, int *test, int m){
for(int i=0; i<m; i++){
if(*(input+i) < *(test+i)){
return 0;
}else if(*(input+i) > *(test+i)){
return 2;
}
}
return 1;
}

void sort(int *input[], int n, int m){
if(n<=1) return;
int *position[3][n], *test = input[0];
int numOfPosition[3];
for(int i=0; i<3; i++) numOfPosition[i] = 0;
for(int i=0; i<n; i++){
int side = testSide(input[i], test, m);
position[side][numOfPosition[side]] = input[i];
numOfPosition[side]++;
}
sort(position[0], numOfPosition[0], m);
sort(position[2], numOfPosition[2], m);
int positionOfInput = 0;
for(int i=0; i<3; i++){
for(int j=0; j<numOfPosition[i]; j++){
input[positionOfInput] = position[i][j];
positionOfInput++;
}
}
}

int main(){
int n, m;
while(cin>>n>>m){
int input[n][m];
for(int i=0; i<n; i++){
for(int j=0; j<m; j++){
cin>>input[i][j];
}
}
int *inputPosition[n];
for(int i=0; i<n; i++)
inputPosition[i] = &input[i][0];
sort(inputPosition, n, m);
for(int i=0; i<n; i++){
for(int j=0; j<m; j++){
cout<<*(inputPosition[i]+j)<<" ";
}
cout<<endl;
}
}
return 0;
}

 
ZeroJudge Forum