Codeforces Round #466 (Div. 2) C Phone Numbers(set)

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int main()
 4 {
 5     int n,k;
 6     while(cin>>n>>k)
 7     {
 8         string s;
 9         set<char>ss;
10         cin>>s;
11         for(int i=0;i<n;i++){
12             ss.insert(s[i]);
13         }
14         int len=ss.size();
15         if(n<k){
16             cout<<s;
17             for(int i=0;i<k-n;i++){
18                 cout<<*ss.begin();
19             }
20             cout<<endl;
21         }
22         else{
23             int pos;
24             for(int i=k-1;i>=0;i--){
25                 if(*ss.upper_bound(s[i])>='a'&&*ss.upper_bound(s[i])<='z'){
26                     s[i]=*ss.upper_bound(s[i]);
27                     pos=i;
28                     break;
29                 }
30             }
31             for(int i=0;i<pos;i++){
32                 cout<<s[i];
33             }
34             cout<<s[pos];
35             for(int i=pos+1;i<k;i++){
36                 cout<<*ss.begin();
37             }
38             cout<<endl;
39         }
40     }
41     return 0;
42 }

 

posted @ 2018-03-12 19:55  ghblw  阅读(138)  评论(0)    收藏  举报