Advertisement
mickypinata

CUBE-T085: String Partition

Jun 6th, 2021
680
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.76 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. string str;
  5. int len;
  6.  
  7. int diffChar(int sz){
  8.     int cnt = 0;
  9.     for(int i = 0; i < sz; ++i){
  10.         int charCnt[27] = {};
  11.         int mx = 0;
  12.         for(int j = i; j < len; j += sz){
  13.             ++charCnt[str[j] - 'a'];
  14.             mx = max(mx, charCnt[str[j] - 'a']);
  15.         }
  16.         cnt += len / sz - mx;
  17.     }
  18.     return cnt;
  19. }
  20.  
  21. int main(){
  22.  
  23.     cin >> str;
  24.     len = str.size();
  25.     int upBound = sqrt(len);
  26.     int mn = len;
  27.     for(int i = 1; i <= upBound; ++i){
  28.         if(len % i == 0){
  29.             mn = min(mn, diffChar(i));
  30.             if(i != 1 && i != len / i){
  31.                 mn = min(mn, diffChar(len / i));
  32.             }
  33.         }
  34.     }
  35.     cout << mn;
  36.  
  37.     return 0;
  38. }
  39.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement