Submission #1336895

#TimeUsernameProblemLanguageResultExecution timeMemory
1336895tkm_algorithmsPaint By Numbers (IOI16_paint)C++20
32 / 100
1 ms344 KiB
#include "paint.h"
#include <bits/stdc++.h>

using namespace std;
using ll = long long;
//#define int ll
using P = pair<int, int>;
#define all(x) x.begin(), x.end()
#define rep(x,s,e) for (auto x=(s)-((s)>(e));x!=(e)-((s)>(e));((s)<(e)?x++:x--))
#define sz(x) (int)x.size()
const char nl = '\n';

string solve_puzzle(string s, vector<int> c) {
	int n = sz(s), k = sz(c);
	int pos = 1, sum = 0;
	sum = accumulate(all(c), 0);
	bool ok = true;
	if (sum+k-1==n)ok = false;
	vector<int> res(n+3);
	rep(i, 0, k) {
		sum -= c[i];
		int cu = n-pos-c[i]+1-sum-(k-i-1);
		if (pos+cu <= pos+c[i]-1) {
			res[pos+cu] += 1;
			res[pos+c[i]] -= 1;
		}
		pos += c[i]+1;
	}
	
	string ans;
	rep(i, 1, n+1) {
		res[i] += res[i-1];
		if (res[i])ans += 'X';
		else ans += (ok?'?':'_');
	}
	return ans;
}
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...