Submission #1317824

#TimeUsernameProblemLanguageResultExecution timeMemory
1317824foxsergInfinite Race (EGOI24_infiniterace2)C++20
100 / 100
16 ms2768 KiB
#include <bits/stdc++.h>

// #pragma GCC optimize("Ofast,unroll-loops,O3")
// #pragma GCC target("avx,avx2,fma")

using namespace std;
// using namespace __gnu_pbds;
// using namespace __gnu_cxx;

// template <typename T>
// using ordered_set = tree <T, null_type, less <T>, rb_tree_tag, tree_order_statistics_node_update>;
// template <typename T>
// using ordered_multiset = tree <T, null_type, less_equal <T>, rb_tree_tag, tree_order_statistics_node_update>;

using ll = long long;
using ld = long double;
using ull = unsigned long long;
using uint = unsigned int;
using i128 = __int128_t;

istream& operator>>(istream& is, i128& x) {
    long long a;
    is >> a;
    x = (i128) a;
    return is;
}
ostream& operator<<(ostream& os, i128& x) {
    long long a = (long long) x;
    os << a;
    return os;
}

template <typename T>
ostream& operator<<(ostream& is, vector <T>& a) {
    for (uint i = 0; i < a.size(); ++i) is << a[i] << " ";
    return is;
}

#ifdef LOCAL
    # define DEBUG(x) cerr << "(" << __LINE__ << ") " << #x << ":  " << x << endl;
#else
    # define DEBUG(x)
#endif

// const ll inf = 1e18 + 1e16;
const int inf_t = 1e9 + 7;
const ll mod = 1e9 + 7;

signed main() {
    #ifdef LOCAL
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
    #endif
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);

    int n;
    cin >> n;

    int q;
    cin >> q;

    int cur = 0;
    int bal[n] = {0};
    int prev[n] = {0};
    int last[n] = {-1};

    for (int i = 0; i < q; ++i) {
        int x;
        cin >> x;
        if (x > 0) {
            if (bal[x] == 1 && last[x] == cur) {
                ++last[x];
                ++cur;
                bal[x] = 1;
            } else {
                bal[x] = 1;
                last[x] = cur;
            }
        } else {
            x = -x;
            bal[x] = 0;
            last[x] = cur;
        }
    }

    cout << cur;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...