-
Notifications
You must be signed in to change notification settings - Fork 1
/
YetAnotherKMPProblem.cpp
executable file
·91 lines (67 loc) · 2.01 KB
/
YetAnotherKMPProblem.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
/* Enter your code here. Read input from STDIN. Print output to STDOUT */
int min = -1;
int min_number = 0;
int counter = 0;
int first = -1;
int numbers[ 26 ];
for( int i = 0; i < 26; ++i ){
cin >> numbers[ i ];
if( min == -1 and numbers[ i ] != 0 ){
min = numbers[ i ];
min_number = i;
first = i;
}
if( numbers[ i ] < min and numbers[ i ] != 0 ){
min = numbers[ i ];
min_number = i;
}
if( numbers[ i ] != 0 ) counter++;
}
cout << char(97+ min_number ) ;
numbers[ min_number ]--;
if( min_number != first ){
for( int i = 0 ; i < 26; ++i ){
while( numbers[ i ] > 0 ){
cout << char( 97+i );
numbers[ i ]--;
}
}
}
else{
if( numbers[ min_number ] > 0 ){
cout << char( 97 + min_number );
numbers[ min_number ]--;
}
int it = 0 ;
if( counter != 1 ){
while( it == first or numbers[ it ] == 0 ){
it++;
}
cout << char( 97 + it );
numbers[ it ]--;
}
for( int i = 0 ; i < 26 ; ++i ){
if( i != min_number )
while( numbers[ i ] > 0 ){
if( min_number < i and numbers[ min_number ] > 0 ){
cout << char( 97 + min_number );
numbers[ min_number ]--;
}
cout << char( 97 + i );
numbers[ i ]--;
}
}
while( numbers[ min_number ] > 0 ){
cout << char ( 97 + min_number );
numbers[ min_number ]--;
}
}
return 0;
}