1
/*
2 ID: wangzha4
3 LANG: C++
4 TASK: hidden
5 */
6 /*
7 Executing
8 Test 1: TEST OK [0.000 secs, 3496 KB]
9 Test 2: TEST OK [0.011 secs, 3496 KB]
10 Test 3: TEST OK [0.000 secs, 3496 KB]
11 Test 4: TEST OK [0.011 secs, 3492 KB]
12 Test 5: TEST OK [0.000 secs, 3492 KB]
13 Test 6: TEST OK [0.000 secs, 3492 KB]
14 Test 7: TEST OK [0.011 secs, 3496 KB]
15 Test 8: TEST OK [0.022 secs, 3492 KB]
16 Test 9: TEST OK [0.032 secs, 3496 KB]
17 Test 10: TEST OK [0.022 secs, 3492 KB]
18 Test 11: TEST OK [0.022 secs, 3492 KB]
19 Test 12: TEST OK [0.011 secs, 3496 KB]
20 Test 13: TEST OK [0.000 secs, 3496 KB]
21 Test 14: TEST OK [0.000 secs, 3496 KB]
22 */
23
24 #include < stdio.h >
25 #include < stdlib.h >
26 #include < string .h >
27
28 const int size = 100100 ;
29
30 int strnum[size * 2 ] ;
31
32 int inn ;
33
34 void input()
35 {
36 char inch = getchar() ;
37 for ( int i = 1 ; i <= inn; i ++ )
38 {
39 scanf( " %c " , & inch ) ;
40 if ( inch == ' \n ' ) scanf( " %c " , & inch ) ;
41 strnum[i] = strnum[i + inn] = inch - ' a ' ;
42 }
43 getchar() ;
44 }
45
46 int cmp( int p1, int p2 )
47 {
48 for ( int i = 0 ; i < inn; i ++ )
49 {
50 if ( strnum[p1 + i] > strnum[p2 + i] ) return i ;
51 else if ( strnum[p1 + i] < strnum[p2 + i] ) return - i ;
52 }
53
54 return 0 ;
55 }
56
57 void process()
58 {
59 int minstrnum = strnum[ 1 ] ;
60 for ( int i = 2 ; i <= inn; i ++ ) if ( minstrnum > strnum[i] )
61 minstrnum = strnum[i] ;
62
63 int p1, p2 ;
64 for ( p1 = 1 ; strnum[p1] != minstrnum; p1 ++ ) ; p2 = p1 + 1 ;
65
66 for ( p2 = p1 + 1 ; p2 <= inn; p2 ++ )
67 {
68 if ( strnum[p2] <= minstrnum )
69 {
70 int cmpval = cmp( p1, p2 ) ;
71 if ( cmpval == 0 ) break ;
72 else if ( cmpval > 0 ) p1 = p2 ;
73 else p2 += ( - 1 * cmpval) ;
74 }
75 }
76
77 printf( " %d\n " , p1 - 1 ) ;
78 }
79
80 int main()
81 {
82 freopen( " hidden.in " , " r " , stdin ) ;
83 freopen( " hidden.out " , " w " ,stdout ) ;
84
85 while ( scanf( " %d " , & inn ) != EOF )
86 {
87 input() ;
88
89 process() ;
90
91 // output() ;
92 }
93 return 0 ;
94 }
2 ID: wangzha4
3 LANG: C++
4 TASK: hidden
5 */
6 /*
7 Executing
8 Test 1: TEST OK [0.000 secs, 3496 KB]
9 Test 2: TEST OK [0.011 secs, 3496 KB]
10 Test 3: TEST OK [0.000 secs, 3496 KB]
11 Test 4: TEST OK [0.011 secs, 3492 KB]
12 Test 5: TEST OK [0.000 secs, 3492 KB]
13 Test 6: TEST OK [0.000 secs, 3492 KB]
14 Test 7: TEST OK [0.011 secs, 3496 KB]
15 Test 8: TEST OK [0.022 secs, 3492 KB]
16 Test 9: TEST OK [0.032 secs, 3496 KB]
17 Test 10: TEST OK [0.022 secs, 3492 KB]
18 Test 11: TEST OK [0.022 secs, 3492 KB]
19 Test 12: TEST OK [0.011 secs, 3496 KB]
20 Test 13: TEST OK [0.000 secs, 3496 KB]
21 Test 14: TEST OK [0.000 secs, 3496 KB]
22 */
23
24 #include < stdio.h >
25 #include < stdlib.h >
26 #include < string .h >
27
28 const int size = 100100 ;
29
30 int strnum[size * 2 ] ;
31
32 int inn ;
33
34 void input()
35 {
36 char inch = getchar() ;
37 for ( int i = 1 ; i <= inn; i ++ )
38 {
39 scanf( " %c " , & inch ) ;
40 if ( inch == ' \n ' ) scanf( " %c " , & inch ) ;
41 strnum[i] = strnum[i + inn] = inch - ' a ' ;
42 }
43 getchar() ;
44 }
45
46 int cmp( int p1, int p2 )
47 {
48 for ( int i = 0 ; i < inn; i ++ )
49 {
50 if ( strnum[p1 + i] > strnum[p2 + i] ) return i ;
51 else if ( strnum[p1 + i] < strnum[p2 + i] ) return - i ;
52 }
53
54 return 0 ;
55 }
56
57 void process()
58 {
59 int minstrnum = strnum[ 1 ] ;
60 for ( int i = 2 ; i <= inn; i ++ ) if ( minstrnum > strnum[i] )
61 minstrnum = strnum[i] ;
62
63 int p1, p2 ;
64 for ( p1 = 1 ; strnum[p1] != minstrnum; p1 ++ ) ; p2 = p1 + 1 ;
65
66 for ( p2 = p1 + 1 ; p2 <= inn; p2 ++ )
67 {
68 if ( strnum[p2] <= minstrnum )
69 {
70 int cmpval = cmp( p1, p2 ) ;
71 if ( cmpval == 0 ) break ;
72 else if ( cmpval > 0 ) p1 = p2 ;
73 else p2 += ( - 1 * cmpval) ;
74 }
75 }
76
77 printf( " %d\n " , p1 - 1 ) ;
78 }
79
80 int main()
81 {
82 freopen( " hidden.in " , " r " , stdin ) ;
83 freopen( " hidden.out " , " w " ,stdout ) ;
84
85 while ( scanf( " %d " , & inn ) != EOF )
86 {
87 input() ;
88
89 process() ;
90
91 // output() ;
92 }
93 return 0 ;
94 }