QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#363241#2337. AzulejosTWTP_TCTF#AC ✓634ms83400kbC++142.4kb2024-03-23 19:54:162024-03-23 19:54:16

Judging History

This is the latest submission verdict.

  • [2024-03-23 19:54:16]
  • Judged
  • Verdict: AC
  • Time: 634ms
  • Memory: 83400kb
  • [2024-03-23 19:54:16]
  • Submitted

answer

#include<iostream>
#include <bits/stdc++.h>

#define ld long double
#define ll long long
#define IO ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
using namespace std;
const int N = 2e3 + 9, MOD = 998244353;


void doWork() {
    int n;
    cin >> n;
    vector<vector<int>> a(n, vector<int>(3)), b(n, vector<int>(3));
    for (int i = 0; i < n; i++) {
        cin >> a[i][0];
        a[i][2] = i;
    }
    for (int i = 0; i < n; i++) {
        cin >> a[i][1];
    }
    for (int i = 0; i < n; i++) {
        cin >> b[i][0];
        b[i][2] = i;
    }
    for (int i = 0; i < n; i++) {
        cin >> b[i][1];
    }
    sort(a.begin(), a.end());
    sort(b.begin(), b.end());

    int p1 = 0, p2 = 0;
    set<pair<int, int> > s1, s2;
    vector<int> ans_a, ans_b;

    while (p1 < n || p2 < n) {
        if (s1.empty()) {
            s1.insert({a[p1][1], a[p1][2]});
            p1++;
            while (p1 < n && a[p1 - 1][0] == a[p1][0]) {
                s1.insert({a[p1][1], a[p1][2]});
                p1++;
            }
        }
        if (s2.empty()) {
            s2.insert({b[p2][1], b[p2][2]});
            p2++;

            while (p2 < n && b[p2 - 1][0] == b[p2][0]) {
                s2.insert({b[p2][1], b[p2][2]});
                p2++;
            }
        }

        if (s1.size() < s2.size()) {
            for (auto i: s1) {
                auto it = s2.lower_bound(make_pair(i.first, -1));
                if (it == s2.begin()) {
                    cout << "impossible";
                    return;
                }
                it--;
                ans_a.push_back(i.second);
                ans_b.push_back(it->second);
                s2.erase(it);
            }
            s1.clear();
        } else {
            for (auto i: s2) {
                auto it = s1.lower_bound(make_pair(i.first + 1, -1));
                if (it == s1.end()) {
                    cout << "impossible";
                    return;
                }
                ans_a.push_back(it->second);
                ans_b.push_back(i.second);
                s1.erase(it);
            }
            s2.clear();
        }
    }
    for (auto i: ans_a)cout << i + 1 << " ";
    cout << "\n";
    for (auto i: ans_b)cout << i + 1 << " ";
}

int main() {

    IO
    int t = 1;
//    cin >> t;
    for (int i = 1; i <= t; i++) {
        //  cout << "Case #" << i << ": ";
        doWork();
    }
}

詳細信息

Test #1:

score: 100
Accepted
time: 0ms
memory: 3872kb

Test #2:

score: 0
Accepted
time: 0ms
memory: 3584kb

Test #3:

score: 0
Accepted
time: 0ms
memory: 3580kb

Test #4:

score: 0
Accepted
time: 0ms
memory: 3816kb

Test #5:

score: 0
Accepted
time: 0ms
memory: 3536kb

Test #6:

score: 0
Accepted
time: 0ms
memory: 3884kb

Test #7:

score: 0
Accepted
time: 0ms
memory: 3688kb

Test #8:

score: 0
Accepted
time: 0ms
memory: 3584kb

Test #9:

score: 0
Accepted
time: 0ms
memory: 3644kb

Test #10:

score: 0
Accepted
time: 0ms
memory: 3584kb

Test #11:

score: 0
Accepted
time: 0ms
memory: 3808kb

Test #12:

score: 0
Accepted
time: 331ms
memory: 81140kb

Test #13:

score: 0
Accepted
time: 0ms
memory: 3592kb

Test #14:

score: 0
Accepted
time: 1ms
memory: 4012kb

Test #15:

score: 0
Accepted
time: 6ms
memory: 4976kb

Test #16:

score: 0
Accepted
time: 0ms
memory: 3884kb

Test #17:

score: 0
Accepted
time: 0ms
memory: 3592kb

Test #18:

score: 0
Accepted
time: 0ms
memory: 3628kb

Test #19:

score: 0
Accepted
time: 0ms
memory: 3656kb

Test #20:

score: 0
Accepted
time: 0ms
memory: 3648kb

Test #21:

score: 0
Accepted
time: 1ms
memory: 3808kb

Test #22:

score: 0
Accepted
time: 82ms
memory: 15216kb

Test #23:

score: 0
Accepted
time: 68ms
memory: 18916kb

Test #24:

score: 0
Accepted
time: 80ms
memory: 18760kb

Test #25:

score: 0
Accepted
time: 52ms
memory: 15108kb

Test #26:

score: 0
Accepted
time: 275ms
memory: 81216kb

Test #27:

score: 0
Accepted
time: 50ms
memory: 18872kb

Test #28:

score: 0
Accepted
time: 77ms
memory: 18632kb

Test #29:

score: 0
Accepted
time: 47ms
memory: 18600kb

Test #30:

score: 0
Accepted
time: 50ms
memory: 18636kb

Test #31:

score: 0
Accepted
time: 634ms
memory: 83400kb

Test #32:

score: 0
Accepted
time: 93ms
memory: 19000kb

Test #33:

score: 0
Accepted
time: 512ms
memory: 81408kb