[ACM ] 10611

看板C_and_CPP (C/C++)作者 (歐爺)時間16年前 (2010/03/10 00:27), 編輯推噓4(403)
留言7則, 3人參與, 最新討論串1/2 (看更多)
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) ( 未必需要依照此格式,文章條理清楚即可 ) 題號: 10611 題目: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=18&page=show_problem&problem=1552 遇到的問題: WA... 有問題的code: (請善用置底文的標色功能) #include<stdio.h> #include<stdlib.h> int bsearch(int *a,int l,int r,int key) { while(l<r) { int mid=(l+r)/2; if(key==a[mid]) return mid; else if(key>a[mid]) l=mid+1; else r=mid-1; } if(a[l]>key) return l; else return l+1; } int main() { int N,Q,*h1,*h2,i,j,result,middle,time=0; scanf("%d",&N); h1=(int*)malloc(sizeof(int)*N); for(i=0;time!=N;i++) { scanf("%d",&h1[i]); time++; if(h1[i]==h1[i-1]) i--; } N=i; scanf("%d",&Q); h2=(int*)malloc(sizeof(int)*Q); for(i=0;i<Q;i++) scanf("%d",&h2[i]); for(i=0;i<Q;i++) { if(h2[i]>h1[N-1]) printf("%d X\n",h1[N-1]); else if(h2[i]<h1[0]) printf("X %d\n",h1[0]); else if(h2[i]==h1[N-1]) { if(N-2>=0) printf("%d X\n",h1[N-2]); else printf("X X\n"); } else if(h2[i]==h1[0]) { printf("X %d\n",h1[1]); } else { result=bsearch(h1,0,N-1,h2[i]); if(h1[result]==h2[i]) printf("%d %d\n",h1[result-1],h1[result+1]); else printf("%d %d\n",h1[result-1],h1[result]); } } system("pause"); return 0; } 補充說明: -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.117.180.29

03/10 00:34, , 1F
WA?
03/10 00:34, 1F

03/10 00:46, , 2F
你在存母猴身高的時候已經把重複身高的給去掉, 所以有
03/10 00:46, 2F

03/10 00:46, , 3F
可能最大的身高不是存在h1[ N - 1 ]裡
03/10 00:46, 3F

03/10 00:47, , 4F
阿, 少看一行@@
03/10 00:47, 4F

03/10 00:51, , 5F
很好奇為什麼else if(h2[i]==h1[0]) 裡面沒有兩個case
03/10 00:51, 5F

03/10 01:01, , 6F
樓上大大有發現問題嗎...WA十幾次...我的頭好暈
03/10 01:01, 6F

03/10 01:08, , 7F
問一個問題 : l、r重合會怎樣? XD
03/10 01:08, 7F
文章代碼(AID): #1BbdRqbV (C_and_CPP)
討論串 (同標題文章)
以下文章回應了本文
1
4
完整討論串 (本文為第 1 之 2 篇):
1
4
4
7
16年前, 03/10
文章代碼(AID): #1BbdRqbV (C_and_CPP)