Submission #1092363

#TimeUsernameProblemLanguageResultExecution timeMemory
1092363efishelXor Sort (eJOI20_xorsort)C++17
0 / 100
1 ms348 KiB
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using vll = vector <ll>;
using ii = pair <ll, ll>;
using vii = vector <ii>;

const ll MAXN = 1E3+16;
ll th[MAXN];
vii ans;
vll ve;
void fop (ll i, ll j) {
    ans.push_back({ i, j });
    ve[i] ^= ve[j];
}

int main () {
    cin.tie(nullptr) -> sync_with_stdio(false);
    ll n, s;
    cin >> n >> s;
    ve = vll(n);
    for (ll &i : ve) cin >> i;
    ll nend = n;
    for (ll bit = 19; bit >= 0; bit--) {
        vll th = ve;
        for (ll &i : th) i = i>>bit&1;
        ll j = find(th.begin(), th.begin()+nend, 1) - th.begin();
        for (ll i = j+1; i < nend; i++) {
            if (th[i]) continue;
            fop(i, i-1);
        }
        for (ll i = j+1; i < nend; i++) {
            fop(i-1, i);
        }
        if (j != nend) nend--;
    }
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...