Submission #1101056

# Submission time Handle Problem Language Result Execution time Memory
1101056 2024-10-15T12:45:09 Z Kirill22 Permutation Recovery (info1cup17_permutation) C++17
43 / 100
4000 ms 7304 KB
#include "bits/stdc++.h"

using namespace std;

vector<int> mods = {(int) 1e9 + 7, 998244353, (int) 1e9 + 13};
struct Int {
    vector<int> val;

    Int(string s = "") {
        for (auto& mod : mods) {
            int ans = 0;
            for (auto& c : s) {
                ans = (ans * 10ll + c - '0') % mod;
            }
            val.push_back(ans);
        }
    }

    Int& operator+=(const Int& other) {
        for (int i = 0; i < (int) mods.size(); i++) {
            val[i] = (val[i] + other.val[i]) % mods[i];
        }
        return *this;
    }

    Int& operator-=(const Int& other) {
        for (int i = 0; i < (int) mods.size(); i++) {
            val[i] -= other.val[i];
            if (val[i] < 0) {
                val[i] += mods[i];
            }
        }
        return *this;
    }

    bool operator==(const Int& other) const {
        return val == other.val;
    }
};

void solve() {
    int n;
    cin >> n;
    vector<Int> a(n);
    for (int i = 0; i < n; i++) {
        string s;
        cin >> s;
        a[i] = Int(s);
    }
    for (int i = n - 1; i; i--) {
        a[i] -= a[i - 1];
    }
    vector<int> ord = {0};
    for (int i = 1; i < n; i++) {
        Int tmp("1");
        for (int j = 0; j <= (int) ord.size(); j++) {
            if (j) {
                tmp += a[ord[j - 1]];
            }
            if (tmp == a[i]) {
                ord.insert(ord.begin() + j, i);
                break;
            }
        }
    }
    vector<int> ans(n);
    for (int i = 0; i < n; i++) {
        ans[ord[i]] = i;
    }
    for (int i = 0; i < n; i++) {
        cout << ans[i] + 1 << " ";
    }
    cout << '\n';
}

int main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    int t = 1;
//    cin >> t;
    while (t--) {
        solve();
    }
}
# Verdict Execution time Memory Grader output
1 Correct 1 ms 336 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 336 KB Output is correct
2 Correct 1 ms 336 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 336 KB Output is correct
2 Correct 1 ms 336 KB Output is correct
3 Correct 4 ms 336 KB Output is correct
4 Correct 5 ms 340 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 336 KB Output is correct
2 Correct 1 ms 336 KB Output is correct
3 Correct 4 ms 336 KB Output is correct
4 Correct 5 ms 340 KB Output is correct
5 Execution timed out 4062 ms 7304 KB Time limit exceeded
6 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 336 KB Output is correct
2 Correct 1 ms 336 KB Output is correct
3 Correct 4 ms 336 KB Output is correct
4 Correct 5 ms 340 KB Output is correct
5 Execution timed out 4062 ms 7304 KB Time limit exceeded
6 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 336 KB Output is correct
2 Correct 1 ms 336 KB Output is correct
3 Correct 4 ms 336 KB Output is correct
4 Correct 5 ms 340 KB Output is correct
5 Execution timed out 4062 ms 7304 KB Time limit exceeded
6 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 336 KB Output is correct
2 Correct 1 ms 336 KB Output is correct
3 Correct 4 ms 336 KB Output is correct
4 Correct 5 ms 340 KB Output is correct
5 Execution timed out 4062 ms 7304 KB Time limit exceeded
6 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 336 KB Output is correct
2 Correct 1 ms 336 KB Output is correct
3 Correct 4 ms 336 KB Output is correct
4 Correct 5 ms 340 KB Output is correct
5 Execution timed out 4062 ms 7304 KB Time limit exceeded
6 Halted 0 ms 0 KB -