acm 题,用二分法做的

#include <stdio.h>
int binary_search( int num[], int t ,int begin, int end ){
        int left = begin;
        int right = end;       
        while( left<= right ){
                int mid = (left+right)/2;
                if( t == num[mid] ){
                        return 1;
                }else if( t > num[mid] ){
                        left = mid+1;
                }else {
                        right = mid-1;
                }
        }
        return 0;
}
int main(){
        int a[1000000];
        int m,n;
        int target;
        while( scanf("%d%d",&m,&n) != EOF ){
                scanf("%d",&target);
                for( int i=0;i<m;i++){
                        for( int j=0;j<n;j++){
                                scanf("%d",&a[n*i+j]);
                        }
                }
                if( binary_search(a,target,0,m*n-1) ){
                        printf("Yes\n");
                }else{
                        printf("No\n");
                }
        }
        return 0;
}

posted @ 2013-10-06 20:58  小薇林  阅读(163)  评论(0编辑  收藏  举报