• Source
    1. #include <iostream>
    2. using namespace std;
    3.  
    4. int main ()
    5. {
    6. int n, k;
    7. cin>>n>>k;
    8. char arr[100005];
    9. for (int i=1; i<=n; i++)
    10. {
    11. cin>>arr[i];
    12. }
    13.  
    14. int diff_pair=0;
    15. int same_pair=0;
    16. for (int i=1, j=n; i<=n, j>=1; i++, j--)
    17. {
    18. if (i>=j) break;
    19. if (arr[i]!=arr[j]) diff_pair++;
    20. else if (arr[i]==arr[j]) same_pair++;
    21. }
    22. if (k>n) cout<<"No";
    23. else if (k==n) cout<<"Yes";
    24. else
    25. {
    26. int kt=0;
    27. for (int i=0; i<=diff_pair; i++)
    28. {
    29. int change=1*i+(diff_pair-i)*2;
    30. if (change==k)
    31. {
    32. kt=1;
    33. break;
    34. }
    35. else
    36. {
    37. if (change<k)
    38. {
    39. int Excess = k-change;
    40. if (n%2!=0)
    41. {
    42. int change_max = same_pair*2;
    43. if (Excess<=change_max+1)
    44. {
    45. kt=1;
    46. break;
    47. }
    48. }
    49. else
    50. {
    51. int change_max = same_pair*2;
    52. if (Excess<=change_max && Excess%2==0)
    53. {
    54. kt=1;
    55. break;
    56. }
    57. }
    58. }
    59. }
    60. }
    61. if (kt==1) cout<<"Yes";
    62. else cout<<"No";
    63. }
    64. return 0;
    65. }