8803 2024. 01. 31 09:32:17 Error42 Nomekop cpp17 Hibás válasz 0/100 1.419s 5036 KiB
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

using ll = long long;

struct nomekop {
    ll pos, delta_attack, companion;
    bool done;
};

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);

    ll n;
    cin >> n;

    vector<ll> a(n);
    for (ll& x : a)
        cin >> x;

    // all same
    if (count(a.begin(), a.end(), a[0]) == n) {
        cout << "!";

        for (int i = 0; i < n; i++)
            cout << " " << a[i];

        cout << endl;

        return 0;
    }

    cout << "?";

    for (int i = 0; i < n; i++)
        cout << " " << a[i];

    cout << endl;

    ll baseline;
    cin >> baseline;

    vector<nomekop> opponents(n);

    auto const test_against = [&](int const f) {
        for (int i = 0; i < n; i++) {
            if (i == f || a[i] == a[f] || opponents[i].done)
                continue;

            cout << "?";

            for (int j = 0; j < n; j++) {
                cout << " ";
                if (j == i)
                    cout << a[f];
                else if (j == f)
                    cout << a[i];
                else
                    cout << a[j];
            }

            cout << endl;

            ll cur;
            cin >> cur;

            ll delta = cur - baseline;

            opponents[i].pos = i;
            opponents[i].delta_attack = delta / (a[f] - a[i]);

            opponents[i].done = true;
        }
    };

    test_against(0);

    for (int i = 1; i < n; i++) {
        if (a[i] != a[0]) {
            test_against(i);
            break;
        }
    }

    sort(opponents.begin(), opponents.end(), [&](nomekop const& a, nomekop const& b) {
        return a.delta_attack < b.delta_attack;
    });

    sort(a.begin(), a.end());

    for (int i = 0; i < n; i++)
        opponents[i].companion = a[i];

    sort(opponents.begin(), opponents.end(), [&](nomekop const& a, nomekop const& b) {
        return a.pos < b.pos;
    });

    cout << "!";

    for (nomekop const& x : opponents)
        cout << " " << x.companion;
    cout << endl;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
subtask1 0/0
1 Elfogadva 3ms 1696 KiB
subtask2 0/10
2 Hibás válasz 3ms 2004 KiB
3 Hibás válasz 3ms 2092 KiB
subtask3 0/30
4 Hibás válasz 4ms 2316 KiB
5 Hibás válasz 28ms 2688 KiB
6 Hibás válasz 28ms 2552 KiB
7 Hibás válasz 28ms 2808 KiB
8 Hibás válasz 4ms 2868 KiB
9 Hibás válasz 28ms 3240 KiB
subtask4 0/20
10 Hibás válasz 97ms 3568 KiB
11 Hibás válasz 97ms 3440 KiB
12 Hibás válasz 97ms 3800 KiB
13 Hibás válasz 97ms 3696 KiB
subtask5 0/40
14 Hibás válasz 1.406s 4200 KiB
15 Hibás válasz 1.419s 4532 KiB
16 Hibás válasz 1.25s 4272 KiB
17 Hibás válasz 1.085s 4472 KiB
18 Hibás válasz 1.389s 4760 KiB
19 Hibás válasz 1.388s 4804 KiB
20 Elfogadva 1.389s 5036 KiB
21 Hibás válasz 1.381s 4736 KiB