QOJ.ac

QOJ

IDSubmission IDProblemHackerOwnerResultSubmit timeJudge time
#1082#656367#8328. A Good ProblemospoasadaoqiFailed.2024-10-29 13:04:352024-10-29 13:04:36

Details

Extra Test:

Invalid Input

input:

8
122 102 87 56 8 0 2 3

output:


result:

FAIL Integer element [index=1] equals to 122, violates the range [0, 8] (stdin, line 2)

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#656367#8328. A Good Problemdaoqi#AC ✓1ms3884kbC++201.2kb2024-10-19 12:38:352024-10-19 12:38:36

answer

#include<bits/stdc++.h>

using namespace std;
typedef long long ll;
const int N = 1e3 + 10;
vector<int> v[N];
vector<pair<int, int>> ans;

void dfs(int l, int r, int now) {
    if (l == r) {
        if (v[l].size() == 0) return;
        for (int i = now; i < r; i++) {
            ans.push_back({1, i});
        }
        return;
    }
    bool flag = false;
    int mid = l + r >> 1;
    for (int i = mid + 1; i <= r; i++) {
        if (v[i].size() == 0) continue;
        flag = true;
        for (auto it: v[i]) ans.push_back({2, it});
    }
    if (flag) {
        for (int i = now + 1; i <= mid; i++) {
            ans.push_back({1, i});
        }
    }
    dfs(l, mid, now);
    dfs(mid + 1, r, mid + 1);
}

void solve() {
    int n;
    cin >> n;
    for (int i = 1; i <= n; i++) {
        int x;
        cin >> x;
        v[x].push_back(i);
    }
    dfs(0, n, 0);
    cout << ans.size() << endl;
    for (auto &[op, x]: ans) {
        cout << op << ' ' << x << '\n';
    }
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int T = 1;
//    cin >> T;
    cout << fixed << setprecision(20);
    while (T--) {
        solve();
    }
    return 0;
}