제출 #1324368

#제출 시각아이디문제언어결과실행 시간메모리
1324368kasamchiHandcrafted Gift (IOI20_gift)C++20
100 / 100
126 ms18928 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>> one, two;
    for (int i = 0; i < r; i++) {
        if (x[i] == 1) {
            one.push_back(make_pair(a[i], b[i]));
        } else {
            two.push_back(make_pair(a[i], b[i]));
        }
    }
    sort(one.begin(), one.end());

    string s(n, '$');
    int sid = 0;
    char chr = 'R';
    for (int i = 0; i < n; ) {
        s[i] = chr;
        if (sid < one.size() && one[sid].first <= i) {
            while (i < n && i <= one[sid].second) {
                s[i] = s[one[sid].first];
                i++;
            }
            sid++;
        } else {
            i++;
        }
        chr = (s[i - 1] == 'R' ? 'B' : 'R');
    }

    vector<int> pre(n);
    for (int i = 1; i < n; i++) {
        pre[i] = pre[i - 1] + (s[i] != s[i - 1]);
    }

    for (auto &[l, r] : two) {
        if (pre[l] == pre[r]) {
            return 0;
        }
    }

    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...