我希望你是我独家记忆

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

PKU3618

Posted on 2008-10-11 15:21 Hero 阅读(148) 评论(0)  编辑 收藏 引用 所属分类: 代码如诗--ACM
 1 #include <stdio.h>
 2 #include <math.h>
 3 #include <string.h>
 4 #include <stdlib.h>
 5 
 6 //#define myDebug 1 ;
 7 
 8 const int INF = 10010000 ;
 9 const int size = 50100 ;
10 
11 int data[size] ;
12 
13 int inm, inn ;
14 int out ;
15 
16 int cmp( const void *a, const void *b ) 
17 {
18     return *(int *)a - *(int *)b ;
19 }
20 
21 void input()
22 {
23     forint i=1; i<=inn; i++ ) scanf( "%d"&data[i] ) ;
24 
25     data[inn+1= INF ; data[0= -1*INF ;
26     qsort( data+1, inn, sizeof(data[1]), cmp ) ;
27 
28 #ifdef myDebug
29     {
30         forint i=1; i<=inn; i++ ) printf( "%d ", data[i] ) ;
31         printf( "\n" ) ;
32     }
33 #endif
34 }
35 
36 void process()
37 {
38     int p1, p2 ; int pos0 ;
39 
40     for( pos0=1; pos0<=inn&&data[pos0]<0; pos0++ ) ;
41 
42     p1 = pos0-1; p2 = pos0 ; out = 0 ; int last = 0 ;
43 
44     while( inm > 0 )
45     {
46         if( p1<=0 && p2>inn ) break ;
47 
48         if-1*data[p1] > data[p2] )
49         {
50             inm = inm - abs( last - data[p2] ) ;
51             if( inm < 0 ) break ;
52             else
53             {
54                 out++ ; last = data[p2]; p2++ ;
55             }
56         }
57         else 
58         {
59             inm = inm - abs(last - data[p1] ) ;
60             if( inm < 0 ) break ;
61             else
62             {
63                 out++ ; last = data[p1] ; p1-- ;
64             }
65         }
66     }
67 
68 
69 void output()
70 {
71     printf( "%d\n"out ) ;
72 }
73 
74 int main()
75 {
76     while( scanf( "%d %d"&inm, &inn ) != EOF )
77     {
78         input() ;
79 
80         process() ;
81 
82         output() ;
83     }
84 
85     return 0 ;
86 }

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