Submission #1003702

#TimeUsernameProblemLanguageResultExecution timeMemory
1003702HanksburgerLamps (JOI19_lamps)C++17
4 / 100
14 ms8868 KiB
#include <bits/stdc++.h>
using namespace std;
vector<pair<int, int> > tmp;
vector<int> vec;
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    int n, sz, state=0, ans=0;
    cin >> n;
    string s, t;
    cin >> s >> t;
    for (int i=0; i<n; i++)
    {
        if (i && t[i]!=t[i-1])
        {
            vec.push_back(state);
            state=0;
        }
        if (state%2==0 && s[i]==t[i])
            state++;
        else if (state<2 && s[i]!=t[i])
            state+=2;
    }
    vec.push_back(state);
    sz=vec.size();
    for (int i=0; i<sz; i++)
    {
        if (vec[i]==1)
        {
            int sz0=tmp.size(), cnt=0;
            for (int j=0; j<sz0; j++)
            {
                //cout << tmp[j].first << ' ' << tmp[j].second << '\n';
                if (tmp[j].first==3 || tmp[j].second==1 || (tmp[j].second==2 && j && j<=sz0-2) || (tmp[j].second==3 && cnt%2==0 && j && j<=sz0-2))
                    cnt+=tmp[j].second;
                else
                {
                    if (!cnt)
                        ans++;
                    else
                        ans+=cnt/2+2;
                    cnt=0;
                }
            }
            if (cnt)
                ans+=cnt/2+1;
            tmp.clear();
        }
        else if (tmp.empty() || vec[i]!=tmp.back().first)
            tmp.push_back({vec[i], 1});
        else
            tmp.back().second++;
    }
    int sz0=tmp.size(), cnt=0;
    for (int j=0; j<sz0; j++)
    {
        //cout << tmp[j].first << ' ' << tmp[j].second << '\n';
        if (tmp[j].first==3 || tmp[j].second==1 || (tmp[j].second==2 && j && j<=sz0-2) || (tmp[j].second==3 && cnt%2==0 && j && j<=sz0-2))
            cnt+=tmp[j].second;
        else
        {
            if (!cnt)
                ans++;
            else
                ans+=cnt/2+2;
            cnt=0;
        }
    }
    if (cnt)
        ans+=cnt/2+1;
    cout << ans << '\n';
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...