fork download
  1. #include <bits/stdc++.h>
  2. #define ll long long
  3.  
  4. using namespace std;
  5.  
  6. bool cmp(pair<int,int> a, pair<int,int> b) {
  7. return a.second<b.second;
  8. }
  9.  
  10. ll add(ll a, ll b, ll MOD = 1e9 ) {
  11. return ((a % MOD) + (b % MOD)) % MOD;
  12. }
  13. ll sub(ll a, ll b, ll MOD = 1e9 ) {
  14. return (((a - b) % MOD) + MOD) % MOD;
  15. }
  16.  
  17. int main() {
  18. ios_base::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);
  19. int n,k;
  20. cin >> n >> k;
  21. string s;
  22. cin >> s;
  23. int q=0;
  24. for (int i=0; i<n; i++) {
  25. if (s[i]=='o') k--;
  26. if (s[i]=='?') q++;
  27. }
  28. for (int i=0; i<n; i++) {
  29. if (s[i]=='?') {
  30. if (i&&s[i-1]=='o' || i<n-1 && s[i+1]=='o') {
  31. s[i]='.';
  32. q--;
  33. }
  34. }
  35. }
  36. if (k==0) {
  37. for (int i=0; i<n; i++) {
  38. if (s[i]=='?') {
  39. s[i]='.';
  40. }
  41. }
  42. }
  43. // if (q==k) {
  44. // for (int i=0; i<n; i++) {
  45. // if (s[i]=='?') {
  46. // s[i]='o';
  47. // }
  48. // }
  49. // }
  50. int x=0;
  51. int qq=0;
  52. for (int i=0; i<n; i++) {
  53. if (s[i]=='?') {
  54. x++;
  55. }
  56. if (x && s[i]!='?') {
  57. qq+=(x+1)/2;
  58. x=0;
  59. }
  60. }
  61. if (x) qq+=(x+1)/2;
  62. if (qq==k) {
  63. for (int i=0; i<n; i++) {
  64. if (s[i]=='?') x++;
  65. else if (x%2){
  66. int j=i;
  67. while (x--) {
  68. j--;
  69. if (x%2) s[j]='.';
  70. else s[j]='o';
  71. }
  72. x=0;
  73. }
  74. }
  75. }
  76. if (x%2){
  77. int j=n;
  78. while (x--) {
  79. j--;
  80. if (x%2) s[j]='.';
  81. else s[j]='o';
  82. }
  83. }
  84. cout << s;
  85. }
  86.  
  87.  
  88.  
Success #stdin #stdout 0.01s 5288KB
stdin
8 4
o.??.o??
stdout
Standard output is empty