답안 #1013136

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1013136 2024-07-03T08:22:41 Z vjudge1 Slagalica (COCI19_slagalica2) C++17
40 / 70
52 ms 3692 KB
#include <bits/stdc++.h>
using namespace std;

int main(){
    int n;
    cin >> n;

    vector<int> vec[10], g[10];
    for (int i = 0; i < n; i ++){
        int x, y;
        cin >> x >> y;
        vec[x].push_back(y);
    }
    for (int i = 1; i <= 8; i ++)
        sort(vec[i].rbegin(), vec[i].rend());

    g[5] = {3, 4};
    g[6] = {1, 2};
    g[1] = {3, 4};
    g[2] = {1, 2};
    g[3] = {3, 4};
    g[4] = {1, 2};

    int f = 5;
    if (vec[6].size()) f = 6;
    int l = 7;
    if (vec[8].size()) l = 8;

    int c1 = vec[1].size();
    int c2 = vec[2].size();
    int c3 = vec[3].size();
    int c4 = vec[4].size();

    if (abs(c1 - c4) >= 2){
        cout << -1 << endl;
        return 0;
    }

    if (c1 > c4 and l == 7){
        cout << -1 << endl;
        return 0;
    }
    if (c1 < c4 and l == 8){
        cout << -1 << endl;
        return 0;
    }
    if (c1 == c4 and ((f==6 and l==8) or (f==5 and l==7))){
        cout << -1 << endl;
        return 0;
    }

    vector<int> answer, types;
    for (int x : vec[5]){
        answer.push_back(x);
        types.push_back(5);
    }
    for (int x : vec[6]){
        answer.push_back(x);
        types.push_back(6);
    }

    while (1){
        int last = types.back();
        int min_t = -1;
        for (int t : g[last]){
            if (vec[t].size() == 0) continue;
            if (t == 3 and vec[1].size() == 0){
                min_t = 3;
                break;
            }
            if (t == 2 and vec[4].size() == 0){
                min_t = 2;
                break;
            }
            if (vec[t].size() and (min_t == -1 or vec[min_t].back() > vec[t].back()))
                min_t = t;
        }

        bool all = 1;
        for (int i = 1; i <= 4; i ++)
            all &= (vec[i].size() == 0);
        if (all) break;

        types.push_back(min_t);
        answer.push_back(vec[min_t].back());
        vec[min_t].pop_back();
    }

    int have = 7;
    if (vec[8].size()) have = 8;

    answer.push_back(vec[have][0]);

    for (int x : answer)
        cout << x << " ";
    cout << endl;
}

Compilation message

slagalica.cpp: In function 'int main()':
slagalica.cpp:30:9: warning: unused variable 'c2' [-Wunused-variable]
   30 |     int c2 = vec[2].size();
      |         ^~
slagalica.cpp:31:9: warning: unused variable 'c3' [-Wunused-variable]
   31 |     int c3 = vec[3].size();
      |         ^~
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Output is correct
2 Runtime error 0 ms 348 KB Execution killed with signal 6
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Runtime error 0 ms 348 KB Execution killed with signal 6
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 52 ms 2416 KB Output is correct
2 Correct 35 ms 900 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 38 ms 2352 KB Output is correct
2 Runtime error 37 ms 3692 KB Execution killed with signal 11
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 38 ms 932 KB Output is correct
2 Correct 40 ms 2292 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Runtime error 35 ms 3104 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 39 ms 2288 KB Output is correct
2 Correct 34 ms 984 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 38 ms 2760 KB Output is correct
2 Runtime error 41 ms 2804 KB Execution killed with signal 11
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 32 ms 892 KB Output is correct
2 Correct 39 ms 2440 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 45 ms 2648 KB Output is correct
2 Correct 32 ms 856 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 44 ms 2440 KB Output is correct
2 Runtime error 37 ms 3648 KB Execution killed with signal 11
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 44 ms 2648 KB Output is correct
2 Correct 35 ms 848 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 37 ms 2248 KB Output is correct
2 Correct 32 ms 860 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 37 ms 2504 KB Output is correct
2 Correct 36 ms 952 KB Output is correct