Submission #1315191

#TimeUsernameProblemLanguageResultExecution timeMemory
1315191mantaggezHandcrafted Gift (IOI20_gift)C++20
55 / 100
81 ms16960 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) {
    string s = "";
    
    vector<int> sl(n + 1);
    for(int i=0;i<r;i++)
    {
    	int u = a[i];
    	int v = b[i];
    	if(x[i] == 1)
		{
			sl[u]++;
			sl[v + 1]--;
		}
	}
	
	for(int i=1;i<n;i++) sl[i] += sl[i - 1];
	for(int i=0;i<n;i++) if(sl[i] > 0) sl[i] = 1;
	// for(int i=0;i<n;i++) cout << sl[i] << ' '; cout << '\n';
	
	vector<int> qs(n, 0);
	qs[0] = sl[0];
	for(int i=1;i<n;i++) qs[i] = qs[i - 1] + sl[i];
	// for(int i=0;i<n;i++) cout << qs[i] << ' '; cout << '\n';
	
	char cur = 'R';
	for(int i=0;i<n;i++)
	{
		if(sl[i] == 0 || sl[i - 1] == 0)
		{
			if(cur == 'R') cur = 'B';
			else cur = 'R';	
		}
		s += cur;
	}
	// for(auto c : s) cout << c << ' '; cout << '\n';
    
    for(int i=0;i<r;i++)
    {
    	if(x[i] == 2)
    	{
    		int u = a[i];
    		int v = b[i];
    		if(qs[v] - qs[max(u - 1, 0)] >= v - u + 1) 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...