Submission #72026991


Source Code Expand

#include <bits/stdc++.h>

#include <atcoder/all>

using namespace std;
using namespace atcoder;

#define int long long
#define ALL(x) (x).begin(), (x).end()
#define MAX(x) *max_element(ALL(x))
#define MIN(x) *min_element(ALL(x))

typedef pair<int, int> PI;
typedef pair<int, pair<int, int>> PII;
static const int INF = 1010000000000000017LL;
static const double eps = 1e-12;
static const double pi = 3.14159265358979323846;
static const int dx[4] = {1, -1, 0, 0};
static const int dy[4] = {0, 0, 1, -1};
static const int ddx[8] = {1, -1, 0, 0, 1, 1, -1, -1};
static const int ddy[8] = {0, 0, 1, -1, 1, -1, 1, -1};

template <class T>
inline bool chmin(T& a, T b) {
    if (a > b) {
        a = b;
        return true;
    }
    return false;
}
template <class T>
inline bool chmax(T& a, T b) {
    if (a < b) {
        a = b;
        return true;
    }
    return false;
}

int N;

signed main() {
    cin >> N;
    vector<int> A(N);
    set<PI> st;
    for (int i = 0; i < N; ++i) {
        cin >> A[i];
        st.insert({i, A[i]});
    }
    auto itr_s = st.begin();
    bool erased = false;
    while (itr_s != st.end()) {
        if (erased) {
            for (int i = 0; i < 4; ++i) {
                if (itr_s == st.begin()) {
                    break;
                }
                itr_s--;
            }
        }
        int cnt = 1;
        int v = itr_s->second;
        // cout << "----------------------" << endl;
        while (itr_s != st.end()) {
            // cout << itr_s->first << " " << itr_s->second << endl;
            itr_s++;
            if (v != itr_s->second) {
                break;
            } else {
                cnt++;
                if (cnt == 4) {
                    break;
                }
            }
        }
        if (cnt == 4) {
            for (int i = 0; i < 4; ++i) {
                itr_s = st.erase(itr_s);
                if (itr_s == st.begin()) {
                    break;
                } else {
                    itr_s--;
                }
            }
            erased = true;
        } else {
            erased = false;
        }
    }
    cout << st.size() << endl;
}

Submission Info

Submission Time
Task C - 1D puyopuyo
User tsuyosshi
Language C++23 (GCC 15.2.0)
Score 300
Code Size 2238 Byte
Status AC
Exec Time 83 ms
Memory 17416 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 300 / 300
Status
AC × 3
AC × 21
Set Name Test Cases
Sample 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt
All 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 01_random_00.txt, 01_random_01.txt, 01_random_02.txt, 01_random_03.txt, 01_random_04.txt, 01_random_05.txt, 01_random_06.txt, 01_random_07.txt, 01_random_08.txt, 01_random_09.txt, 01_random_10.txt, 01_random_11.txt, 01_random_12.txt, 01_random_13.txt, 01_random_14.txt, 01_random_15.txt, 01_random_16.txt, 01_random_17.txt
Case Name Status Exec Time Memory
00_sample_00.txt AC 1 ms 3652 KiB
00_sample_01.txt AC 1 ms 3540 KiB
00_sample_02.txt AC 1 ms 3420 KiB
01_random_00.txt AC 1 ms 3652 KiB
01_random_01.txt AC 78 ms 17308 KiB
01_random_02.txt AC 78 ms 17388 KiB
01_random_03.txt AC 76 ms 17308 KiB
01_random_04.txt AC 79 ms 17304 KiB
01_random_05.txt AC 78 ms 17416 KiB
01_random_06.txt AC 83 ms 17388 KiB
01_random_07.txt AC 83 ms 17356 KiB
01_random_08.txt AC 83 ms 17360 KiB
01_random_09.txt AC 76 ms 17356 KiB
01_random_10.txt AC 76 ms 17240 KiB
01_random_11.txt AC 76 ms 17240 KiB
01_random_12.txt AC 73 ms 17304 KiB
01_random_13.txt AC 74 ms 17308 KiB
01_random_14.txt AC 74 ms 17364 KiB
01_random_15.txt AC 75 ms 17380 KiB
01_random_16.txt AC 69 ms 17260 KiB
01_random_17.txt AC 73 ms 17376 KiB