Problem p02939 (C++)

Buggy submission (status: Runtime Error):
#include <bits/stdc++.h>
using namespace std;
#define MOD 1000000007
#define pb push_back
#define all(a) (a).begin(), (a).end()
#define F first
#define S second
#define endl '\n'
#define PI 3.14159265359d
#define sz(x) (int)x.size()
#define rep(i, a, b) for (int i = a; i < b; i++)
#define magic 109
#define INF INT_MAX
using namespace std;
const int MN = 20000000;

// struct trie
// {
//     int n;
//     int nodes[MN][2];

// void clear()
// {
//     n = 1; nodes[0][0] = nodes[0][1] = -1;
// }
// void insert(int x)
// {
//     int node = 0;
//     for(int i = 31; i>=0; i--)
//     {
//         int next = (x & 1<<i )!=0;
//         if(nodes[node][next]==-1)
//         {
//             nodes[node][next] = n;
//             nodes[n][0] = nodes[n][1] = -1;
//             n++;
//         }
//         node = nodes[node][next];
//     }
// }
// int query(int x)
// {
//     int node = 0;
//     int ans = 0;
//     for(int i = 31; i>=0; i--)
//     {
//         int next = fc (x & (1<<i))!=0;
//         int cool = -1;
//         if(nodes[node][next^1]==-1)
//         {
//             next^=1;
//             cool = 0;
//         }
//         if(cool)
//             ans+=1<<i;
//         if(nodes[node][next^1]==-1)while(true){}
//             node = nodes[node][next^1];
//     }
//     return ans;
// }
// };
// trie tree;
void solve() {
  string s;
  cin >> s;
  int n = s.length();
  int ans = 0;
  vector<string> st;
  string l = "";
  rep(i, 0, n) {
    l += s[i];
    if (st.size() == 0) {
      st.push_back(l);
      l = "";
    } else if (st.back() != l) {
      st.push_back(l);
      l = "";
    }
  }
  cout << st.size();
}

signed main() {
#ifndef ONLINE_JUDGE
  // for getting input from input.txt
  freopen("input.txt", "r", stdin);
  // for writing output to output.txt
  freopen("output.txt", "w", stdout);
#endif
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);

  int t = 1;
  // cin>>t;

  while (t--)
    solve();

  return 0;
}

Fixed submission:
#include <bits/stdc++.h>
using namespace std;
#define MOD 1000000007
#define pb push_back
#define all(a) (a).begin(), (a).end()
#define F first
#define S second
#define endl '\n'
#define PI 3.14159265359d
#define sz(x) (int)x.size()
#define rep(i, a, b) for (int i = a; i < b; i++)
#define magic 109
#define INF INT_MAX
using namespace std;
const int MN = 20000000;

// struct trie
// {
//     int n;
//     int nodes[MN][2];

// void clear()
// {
//     n = 1; nodes[0][0] = nodes[0][1] = -1;
// }
// void insert(int x)
// {
//     int node = 0;
//     for(int i = 31; i>=0; i--)
//     {
//         int next = (x & 1<<i )!=0;
//         if(nodes[node][next]==-1)
//         {
//             nodes[node][next] = n;
//             nodes[n][0] = nodes[n][1] = -1;
//             n++;
//         }
//         node = nodes[node][next];
//     }
// }
// int query(int x)
// {
//     int node = 0;
//     int ans = 0;
//     for(int i = 31; i>=0; i--)
//     {
//         int next = fc (x & (1<<i))!=0;
//         int cool = -1;
//         if(nodes[node][next^1]==-1)
//         {
//             next^=1;
//             cool = 0;
//         }
//         if(cool)
//             ans+=1<<i;
//         if(nodes[node][next^1]==-1)while(true){}
//             node = nodes[node][next^1];
//     }
//     return ans;
// }
// };
// trie tree;
void solve() {
  string s;
  cin >> s;
  int n = s.length();
  int ans = 0;
  vector<string> st;
  string l = "";
  rep(i, 0, n) {
    l += s[i];
    if (st.size() == 0) {
      st.push_back(l);
      l = "";
    } else if (st.back() != l) {
      st.push_back(l);
      l = "";
    }
  }
  cout << st.size();
}

signed main() {

  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);

  int t = 1;
  // cin>>t;

  while (t--)
    solve();

  return 0;
}