Submission #1228748

#TimeUsernameProblemLanguageResultExecution timeMemory
122874812345678Handcrafted Gift (IOI20_gift)C++20
100 / 100
147 ms18940 KiB
#include "gift.h"
#include <bits/stdc++.h>

using namespace std;

const int nx=5e5+5;

int qs[nx], lst;
string s;
vector<pair<int, int>> rng;

int construct(int n, int r, std::vector<int> a, std::vector<int> b, std::vector<int> x) {
    for (int i=0; i<r; i++) if (x[i]==1) qs[a[i]]++, qs[b[i]]--;
    for (int i=0; i<n; i++)
    {
        qs[i+1]+=qs[i];
        if (!qs[i]) rng.push_back({lst, i}), lst=i+1;
    }
    for (int i=0; i<r; i++)
    {
        if (x[i]==2)
        {
            auto itr=upper_bound(rng.begin(), rng.end(), make_pair(b[i], INT_MAX));
            if (prev(itr)->first<=a[i]) return 0;
        }
    }
    s.resize(n, 'R');
    for (int i=0; i<rng.size(); i+=2) for (int j=rng[i].first; j<=rng[i].second; j++) s[j]='B';
    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...