Submission #710544

#TimeUsernameProblemLanguageResultExecution timeMemory
710544tanprodiumAncient Machine (JOI21_ancient_machine)C++17
30 / 100
72 ms9716 KiB
#include "Anna.h"
#include<bits/stdc++.h>

using namespace std;

int cnt = 0;

/*void Send(int a) {
    ++cnt;
    cout << a << ' ';
}*/

void Anna(int N, vector<char> S) {
    string s = "";

    for (int i = 0; i < N; i++) s += S[i];

    if (N == 1) {
        Send(1);
        return;
    }

    int sz = N;

    int u = 0, v = sz - 1;

    for (int i = 0; i < N; i++)
    if (s[i] == 'X') {
        u = i;
        break;
    }

    for (int i = sz - 1; i >= 0; i--)
    if (s[i] == 'Z') {
        v = i;
        break;
    }

    for (int i = 0; i < u; i++) Send(0);
    Send(1);

    for (int i = u + 1; i < v; i++)
        if (s[i] == 'Z') Send(1);
        else Send(0);
    Send(1);

    for (int i = v + 1; i < sz; i++) Send(0);
}

/*void solve() {
    int n;
    string s;
    vector<char> vs;
    cin >> n >> s;

    for (int i = 0; i < n; i++)
        vs.push_back(s[i]);

    Anna(n, vs);
}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(0); cout.tie(0);
    solve();
    return 0;
}*/
#include "Bruno.h"
#include<bits/stdc++.h>

using namespace std;

template<class X, class Y>
    bool maximize(X &x, const Y &y) {
        if (y > x) {
            x = y;
            return (true);
        } else return (false);
    }

const int oo = 1e9;
const int LOG = 17;

/*void Remove(int d) {
    cout << d << ' ';
}*/

// sub1

/*void Bruno(int N, int L, vector<int> A) {
    string s = "";

    for (int i = 0; i < L; i += 2) {
        if (A[i] == 0) {
            if (A[i + 1] == 0)
                s += 'X';
            else s += 'Y';
        } else s += 'Z';
    }

    int sz = N;
    int all = (1 << sz);
    vector<int> dp(all + 5, -oo), rem(all + 5, 0);
    dp[0] = 0;

    for (int mask = 0; mask < all; mask++) {
        vector<int> pos;

        for (int i = 0; i < sz; i++)
            if (!(mask >> i & 1))
                pos.push_back(i);

        int spos = (int)pos.size();

        for (int i = 0; i < spos; i++) {
            bool good = false;
            int cur = pos[i];

            if (i > 0 && i < spos - 1) {
                int pre = pos[i - 1];
                int suf = pos[i + 1];

                if (s[pre] == 'X' && s[cur] == 'Y' && s[suf] == 'Z')
                    good = true;
            }

            int nmask = mask | (1 << cur);

            if (maximize(dp[nmask], dp[mask] + good))
                rem[nmask] = cur;
        }
    }

    vector<int> ans;

    int mask = all - 1;
    while (mask) {
        int bit = rem[mask];
        ans.push_back(bit);
        mask ^= (1 << bit);
    }

    reverse(ans.begin(), ans.end());

    for (int x : ans) Remove(x);
}*/

// sub2

void Remseg(int l, int r) {
    if (l > r) return;
    for (int i = l; i <= r; i++) Remove(i);
}

void Bruno(int N, int L, vector<int> A) {
    int sz = N;

    int u, v;

    for (int i = 0; i < sz; i++)
    if (A[i] == 1) {
        u = i;
        break;
    }

    for (int i = sz - 1; i >= 0; i--)
    if (A[i] == 1) {
        v = i;
        break;
    }

    Remseg(0, u - 1);
    Remseg(v + 1, sz - 1);

    int pre = u;

    for (int i = u + 1; i <= v; i++)
    if (A[i] == 1) {
        for (int j = i - 1; j > pre; j--)
            Remove(j);

        Remove(i);

        pre = i;
    }

    Remove(u);
}

/*void solve() {
    int n;
    int l;
    vector<int> a;

    cin >> n >> l;

    for (int i = 1; i <= l; i++) {
        int x;
        cin >> x;
        a.push_back(x);
    }

    Bruno(n, l, a);
}

int main() {
    //ios_base::sync_with_stdio(false);
    //cin.tie(0); cout.tie(0);
    solve();
    return 0;
}*/

Compilation message (stderr)

Bruno.cpp: In function 'void Bruno(int, int, std::vector<int>)':
Bruno.cpp:110:14: warning: 'u' may be used uninitialized in this function [-Wmaybe-uninitialized]
  110 |     for (int i = u + 1; i <= v; i++)
      |              ^
Bruno.cpp:110:27: warning: 'v' may be used uninitialized in this function [-Wmaybe-uninitialized]
  110 |     for (int i = u + 1; i <= v; i++)
      |                         ~~^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...