********************************* * 日期:2013-2-5 * 作者:SJF0115 * 題號: 九度OJ 題目1097:取中值 * 來源:http://ac.jobdu.com/problem.php?pid=1097 * 結果:AC * 來源:2009年上海交通大學計算機研究生機試真題 * 總結:本題求的是中間值不是中位數,不用排序。 **********************************/ #include<stdio.h> #include<stdlib.h> #include<string.h> int arrayA[1000001]; int arrayB[1000001]; int arrayC[2000002]; int main() { int n,i,j,m,index,lena,lenb; int a,b,c,d; //freopen("C:\\Users\\SJF\\Desktop\\acm.txt","r",stdin); while(scanf("%d",&n)!=EOF) { for(i = 0;i < n;i++){ //數組長度 scanf("%d %d",&lena,&lenb); //第一個數組 for(j = 0;j < lena;j++){ scanf("%d",&arrayA[j]); } //第二個數組 for(j = 0;j < lenb;j++){ scanf("%d",&arrayB[j]); } scanf("%d %d %d %d",&a,&b,&c,&d); //合並數組 index = 0; //第一個數組第a個數到第b個數 for(j = a-1;j < b;j++){ arrayC[index++] = arrayA[j]; } //第二個數組的第c個數到第d個數 for(j = c-1;j < d;j++){ arrayC[index++] = arrayB[j]; } //中間值 printf("%d\n",arrayC[(index-1)/2]); } } return 0; } /********************************* * 日期:2013-2-5 * 作者:SJF0115 * 題號: 九度OJ 題目1097:取中值 * 來源:http://ac.jobdu.com/problem.php?pid=1097 * 結果:AC * 來源:2009年上海交通大學計算機研究生機試真題 * 總結:本題求的是中間值不是中位數,不用排序。 **********************************/ #include<stdio.h> #include<stdlib.h> #include<string.h> int arrayA[1000001]; int arrayB[1000001]; int arrayC[2000002]; int main() { int n,i,j,m,index,lena,lenb; int a,b,c,d; //freopen("C:\\Users\\SJF\\Desktop\\acm.txt","r",stdin); while(scanf("%d",&n)!=EOF) { for(i = 0;i < n;i++){ //數組長度 scanf("%d %d",&lena,&lenb); //第一個數組 for(j = 0;j < lena;j++){ scanf("%d",&arrayA[j]); } //第二個數組 for(j = 0;j < lenb;j++){ scanf("%d",&arrayB[j]); } scanf("%d %d %d %d",&a,&b,&c,&d); //合並數組 index = 0; //第一個數組第a個數到第b個數 for(j = a-1;j < b;j++){ arrayC[index++] = arrayA[j]; } //第二個數組的第c個數到第d個數 for(j = c-1;j < d;j++){ arrayC[index++] = arrayB[j]; } //中間值 printf("%d\n",arrayC[(index-1)/2]); } } return 0; } [cpp] /********************************* * 日期:2013-2-5 * 作者:SJF0115 * 題號: 九度OJ 題目1097:取中值 * 來源:http://ac.jobdu.com/problem.php?pid=1097 * 結果:AC * 來源:2009年上海交通大學計算機研究生機試真題 * 總結:本題求的是中間值不是中位數,不用排序。 **********************************/ #include<stdio.h> #include<stdlib.h> #include<string.h> int arrayA[1000001]; int arrayB[1000001]; int main() { int n,i,j,m,index,lena,lenb; int a,b,c,d; //freopen("C:\\Users\\SJF\\Desktop\\acm.txt","r",stdin); while(scanf("%d",&n)!=EOF) { for(i = 0;i < n;i++){ //數組長度 scanf("%d %d",&lena,&lenb); //第一個數組 for(j = 0;j < lena;j++){ scanf("%d",&arrayA[j]); } //第二個數組 for(j = 0;j < lenb;j++){ scanf("%d",&arrayB[j]); } scanf("%d %d %d %d",&a,&b,&c,&d); int n1 = (b - a + 1); int n2 = (d - c + 1); int index = (n1 + n2 - 1) / 2; //在[a b]區間 if(index < n1){ index = index + a - 1; printf("%d\n",arrayA[index]); } //在[c d]區間 else{ index = index - n1 + c - 1; printf("%d\n",arrayB[index]); } } } return 0; }