Posted on 2008-10-17 09:09
Hero 阅读(192)
评论(0) 编辑 收藏 引用 所属分类:
代码如诗--ACM
1 //度序列绘图
2
3 #include <stdio.h>
4 #include <stdlib.h>
5 #include <string.h>
6
7 const int size = 1100 ;
8 int data[size] ;
9
10 int inn ;
11
12 int cmp( const void *a, const void *b )
13 {
14 return *(int *)b - *(int *)a ;
15 }
16
17 int main()
18 {
19 //freopen( "in.txt", "r", stdin ) ;
20
21 while( scanf( "%d", &inn ) != EOF && inn )
22 {
23 memset( data, 0, sizeof(data) ) ;
24
25 for( int i=1; i<=inn; i++ ) scanf( "%d", &data[i] ) ;
26
27 qsort( data+1, inn, sizeof(data[1]), cmp ) ;
28
29 bool isyes = true ;
30
31 for( int i=1; i<=inn; i++ ) if( data[i]>(inn-1) || data[i]<0 )
32 {
33 isyes = false ; break ;
34 }
35
36 if( false == isyes )
37 {
38 printf( "No\n" ) ; continue ;
39 }
40
41 for( int i=1; i<=inn; i++ )
42 {
43 if( false == isyes ) break ;
44
45 for( int j=i+1; j<=i+data[i]; j++ )
46 {
47 data[j]-- ;
48 if( data[j] < 0 )
49 {
50 isyes = false ; break ;
51 }
52 }
53
54 qsort( data+i+1, inn-i, sizeof(data[1]), cmp ) ;
55 }
56
57 if( isyes ) printf( "Yes\n" ) ;
58 else printf( "No\n" ) ;
59 }
60
61 return 0 ;
62 }