Codeforces Round #155 (Div. 2)

 Problem C. Anagram
 貪心
  1. #include <iostream> 
  2. #include <string> 
  3. using namespace std; 
  4. string s,t; 
  5. int a[26],b[26]; 
  6. int n; 
  7. int main(){ 
  8.     freopen("input.txt","r",stdin); 
  9.     freopen("output.txt","w",stdout); 
  10.     cin>>s>>t; 
  11.     n=s.size(); 
  12.     for(int i=0;i<n;i++) a[s[i]-'A']=++b[s[i]-'A']; 
  13.     for(int i=0;i<n;i++) b[t[i]-'A']--; 
  14.     int j=0; 
  15.     int num=0; 
  16.     for(int i=0;i<n;i++){ 
  17.        int k=s[i]-'A'
  18.        while(j<26&&b[j]>=0) j++; 
  19.        if(b[k]>0&&(k>j||a[k]<=b[k])) num++,s[i]='A'+j,b[k]--,b[j]++;
  20.        a[k]--; 
  21.     } 
  22.     cout<<num<<endl<<s<<endl; 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章