제출 #1172753

#제출 시각아이디문제언어결과실행 시간메모리
1172753adkjtHandcrafted Gift (IOI20_gift)C++20
15 / 100
77 ms13128 KiB
#include "gift.h"
#include<bits/stdc++.h>
using namespace std;
#define pii pair<int,int>
#define f first
#define se second
set<pii> s;
//int change[555555];
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)
        {
            int newl=a[i],newr=b[i];
            auto it=s.lower_bound({a[i],a[i]});
            auto er=it;
            if(it!=s.begin())
            {
               it--;
               if((*it).se>=a[i]) newl=(*it).f;
               er=it;
               it++;
               s.erase(er);
            }

            while(it!=s.end()&&(*it).f<=b[i])
            {
                if((*it).se>b[i]) {
                    newr=(*it).se;
                }
                er=it;
                it++;
                s.erase(er);
            }
            s.insert({newl,newr});
        }
    }
    for(int i=0;i<r;i++)
    {
        if(x[i]==2)
        {
            if(b[i]-a[i]==0)
                return 0;
            auto it=s.upper_bound({a[i]+1,n});
            //cout<<a[i]<<' '<<b[i]<<' '<<(*it).f<<' '<<(*it).se<<'\n';
            if(it!=s.begin())
            {
                it--;

                if(a[i]>=(*it).f&&b[i]<=(*it).se)
                    return 0;
            }


        }
    }
    string ans(n,'R');
    char color[]={'R','B'};
    int now=0,l=0;
    for(auto it=s.begin();it!=s.end();it++)
    {
        cout<<(*it).f<<' '<<(*it).se<<'\n';
        for(int i=l;i<(*it).f;i++){
            now=(now+1)%2;
            ans[i]=color[now];
        }
        now=(now+1)%2;
        for(int i=(*it).f;i<=(*it).se;i++)
        {
            ans[i]=color[now];
        }
        l=(*it).se+1;
    }
    for(int i=l;i<n;i++){
            now=(now+1)%2;
            ans[i]=color[now];
    }

    craft(ans);
    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...