我希望你是我独家记忆

一段永远封存的记忆,随风而去
posts - 263, comments - 31, trackbacks - 0, articles - 3
   :: 首页 :: 新随笔 ::  :: 聚合  :: 管理

URAL--1021--二分

Posted on 2008-08-01 02:16 Hero 阅读(119) 评论(0)  编辑 收藏 引用 所属分类: 代码如诗--ACM

/*
ID: wangzha4
LANG: C++
TASK: URAL1021
*/
//JUDGE_ID: 65448BI

#include 
<stdio.h>
#include 
<stdlib.h>
#include 
<string.h>
#include 
<ctype.h>
#define llong unsigned long long 
#define unint unsigned int
#define printcrlf printf( "\n" )

const int INF = 10000 ;
const int size = 500010 ;

int inm, inn ;
int data1[size] ;
int data2[size] ;

int mybsearch( int key, int *arry, int num ) 
{
    
int left = 1int right = num ;

    
while( left <= right ) {
        
int mid = ( left + right ) / 2 ;
        
if( key == arry[mid] )    return mid ;
        
else if( key > arry[mid] )    left = mid + 1 ;
        
else if( key < arry[mid] )    right = mid - 1 ;
    }

    
return 0 ;
}

int cmp( const void *a, const void *b )
{
    
return -*(int *)a - *(int *)b );//注意这里是降序排列
}

int main()
{
    
//freopen( "frac1.in", "r", stdin ) ;
    
//freopen( "frac1.out","w",stdout ) ;

    
while( scanf( "%d",&inn ) != EOF )
    {
        
forint i=1; i<=inn; i++ ) {
            scanf( 
"%d",&data1[i] ) ;
            data1[i] 
= INF - data1[i] ;
        }

        scanf( 
"%d",&inm ) ; bool OK = false ;
        
forint i=1; i<=inm; i++ ) {
            scanf( 
"%d",&data2[i] ) ;
            
//data2[i] = INF - data2[i] ;
        }

        
forint i=1; i<=inn; i++ ) {
            
if( NULL != bsearch( &data1[i], data2+1, inm, sizeof(int), cmp ) ) {
                OK 
= true ; break ; 
            }
        }

        
if( OK )    printf( "YES\n" ) ;
        
else        printf( "NO\n" )  ;
    }
//while

    
return 0 ;
}

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理