제출 #1358021

#제출 시각아이디문제언어결과실행 시간메모리
1358021toast12Handcrafted Gift (IOI20_gift)C++20
100 / 100
102 ms19452 KiB

#include "gift.h"
#include <bits/stdc++.h>
using namespace std;

int construct(int n, int r, vector<int> a, vector<int> b, vector<int> x) {
    vector<pair<int, int>> p, q;
    for (int i = 0; i < r; i++) {
        if (x[i] == 1) p.push_back({a[i], b[i]});
        else q.push_back({a[i], b[i]});
    }
    sort(p.begin(), p.end());
    vector<pair<int, int>> v;
    if (!p.empty()) v.push_back(p[0]);
    for (int i = 1; i < p.size(); i++) {
        if (p[i].first <= v.back().second) 
            v.back().second = max(v.back().second, p[i].second);
        else v.push_back(p[i]);
    }
    vector<int> ans(n);
    int prev = -1, cur = 0;
    for (int i = 0; i < v.size(); i++) {
        for (int j = prev+1; j < v[i].first; j++) ans[j] = cur++;
        for (int j = v[i].first; j <= v[i].second; j++) ans[j] = cur;
        prev = v[i].second;
        cur++;
    }
    for (int j = prev+1; j < n; j++) ans[j] = cur++;
    for (int i = 0; i < q.size(); i++) {
        if (ans[q[i].first] == ans[q[i].second]) return 0;
    }
    string s = "";
    string temp = "RB";
    for (int i = 0; i < n; i++) s += temp[ans[i]%2];
    craft(s);
    return 1;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...