Problem p02664 (C++) — buggy submission, verdict: Runtime Error

#include <bits/stdc++.h>
using namespace std;
vector<char> pd;
int pdIndexGlobal = 0;
int hatenaNum;
string ans;
string t;
int pdPoint = 0;
// void checkAnswer(){
//     int pdIndex = 0;
//     int tmpPoint = 0;
//     #if 0
//     for(int i = 0; i<pd.size(); i++){
//         cout << pd[i];
//     }
//     cout << endl;
//     #endif
//     vector <char> tmpV(t.length(),'_');
//     for(int i = 0; i < t.length(); i++){
//         if(t[i]=='?'){
//             tmpV[i]=pd[pdIndex];
//             pdIndex++;
//         }else{
//             tmpV[i]=t[i];
//         }
//     }
//     for(int i = 0; i < tmpV.size(); i++){
//         if(i!=tmpV.size()-1){
//             char tmp1 = tmpV[i];
//             char tmp2 = tmpV[i+1];
//             if((tmp1=='P')&&(tmp2=='D')){
//                 tmpPoint++;
//             }
//             if(tmp1=='D'){
//                 tmpPoint++;
//             }
//         }else{
//             char tmp = tmpV[i];
//             if(tmp=='D'){
//                 tmpPoint++;
//             }
//         }
//     }
//     //cout << tmpPoint << endl;
//     if(pdPoint<tmpPoint){
//         pdPoint=tmpPoint;
//         ans.clear();
//         pdIndex=0;
//         for(int i = 0; i<tmpV.size(); i++){
//             char tmp = tmpV[i];
//             //cout << tmp;
//             ans.push_back(tmp);
//             //cout << tmp;
//         }
//         // for(int i = 0; i<ans.size(); i++){
//         //     cout << ans[i];
//         // }
//         // cout << endl;
//     }
// }
// void dfs(char c){
//     pd[pdIndexGlobal]=c;
//     pdIndexGlobal++;
//     //cout << c << endl;
//     if(pdIndexGlobal>=hatenaNum){
//         //checkAnswer
//         checkAnswer();
//     }else{
//         dfs('P');
//         pdIndexGlobal--;
//         dfs('D');
//         pdIndexGlobal--;
//     }
// }
int main() {
  cin >> t;
#if 0
    for(int i = 0; i < t.length(); i++){
        if(t[i]=='?'){
            hatenaNum++;
        }
    }
    pd=vector<char>(hatenaNum,'_');
    //cout << hatenaNum << endl;
    dfs('P');
    pdIndexGlobal--;
    dfs('D');
    pdIndexGlobal--;
#else
  for (int i = 0; i < t.length(); i++) {
    if (t[i] == '?') {
      t[i] = 'D';
    }
  }
// for(int i = t.length()-1; i >= 0; i--){
//     if(i==t.length()-1){
//         if(t[i]=='?'){
//             t[i]='D';
//         }
//     }else if(i==0){
//         if(t[i]=='?'){
//             t[i]='D';
//         }
//     }else{
//         if(t[i]=='?'){
//             if(t[i-1]=='?'){
//                 t[i-1]='P';
//                 t[i]='D';
//             // }else if(t[i-1]=='P'){
//             //      t[i]='D';
//             // }else if(t[i+1]=='D'){
//             //      t[i]='P';
//             }else{
//                 t[i]='D';
//             }
//         }
//     }
// }
// for(int i = 0; i < t.length(); i++){
//     if(i!=t.length()-1){
//         if(t[i]=='?'){
//             if(t[i+1]=='D'){
//                 t[i]='P';
//             }else if(t[i+1]=='?'){
//                 t[i]='P';
//                 t[i+1]='D';
//             }else{
//                 t[i]='D';
//             }
//         }
//     }else{
//         if(t[i]=='?'){
//             t[i]='D';
//         }
//     }
// }
#endif
  // for(int i = 0; i<ans.size(); i++){
  //     cout << ans[i];
  // }
  // cout << endl;
  cout << t << endl;
  return 0;
}

Error: 0

Fixed submission:

#include <bits/stdc++.h>
using namespace std;
vector<char> pd;
int pdIndexGlobal = 0;
int hatenaNum;
string ans;
string t;
int pdPoint = 0;
void checkAnswer() {
  int pdIndex = 0;
  int tmpPoint = 0;
#if 0
    for(int i = 0; i<pd.size(); i++){
        cout << pd[i];
    }
    cout << endl;
#endif
  vector<char> tmpV(t.length(), '_');
  for (int i = 0; i < t.length(); i++) {
    if (t[i] == '?') {
      tmpV[i] = pd[pdIndex];
      pdIndex++;
    } else {
      tmpV[i] = t[i];
    }
  }
  for (int i = 0; i < tmpV.size(); i++) {
    if (i != tmpV.size() - 1) {
      char tmp1 = tmpV[i];
      char tmp2 = tmpV[i + 1];
      if ((tmp1 == 'P') && (tmp2 == 'D')) {
        tmpPoint++;
      }
      if (tmp1 == 'D') {
        tmpPoint++;
      }
    } else {
      char tmp = tmpV[i];
      if (tmp == 'D') {
        tmpPoint++;
      }
    }
  }
  // cout << tmpPoint << endl;
  if (pdPoint < tmpPoint) {
    pdPoint = tmpPoint;
    ans.clear();
    pdIndex = 0;
    for (int i = 0; i < tmpV.size(); i++) {
      char tmp = tmpV[i];
      // cout << tmp;
      ans.push_back(tmp);
      // cout << tmp;
    }
    // for(int i = 0; i<ans.size(); i++){
    //     cout << ans[i];
    // }
    // cout << endl;
  }
}
void dfs(char c) {
  pd[pdIndexGlobal] = c;
  pdIndexGlobal++;
  // cout << c << endl;
  if (pdIndexGlobal >= hatenaNum) {
    // checkAnswer
    checkAnswer();
  } else {
    dfs('P');
    pdIndexGlobal--;
    dfs('D');
    pdIndexGlobal--;
  }
}
int main() {
  cin >> t;
#if 1
  for (int i = 0; i < t.length(); i++) {
    if (t[i] == '?') {
      hatenaNum++;
    }
  }
  pd = vector<char>(hatenaNum, '_');
  // cout << hatenaNum << endl;
  dfs('P');
  pdIndexGlobal--;
  dfs('D');
  pdIndexGlobal--;
#else
  for (int i = 0; i < t.length(); i++) {
    if (i != t.length() - 1) {
      if (t[i] == '?') {
        if (t[i + 1] == 'D') {
          t[i] = 'P';
        } else if (t[i + 1] == '?') {
          t[i] = 'P';
          t[i + 1] = 'D';
        } else {
          t[i] = 'D';
        }
      }
    } else {
      if (t[i] == '?') {
        t[i] = 'D';
      }
    }
  }
#endif
  for (int i = 0; i < ans.size(); i++) {
    cout << ans[i];
  }
  cout << endl;
  //    cout << t << endl;
  return 0;
}