Submission #1175721

#TimeUsernameProblemLanguageResultExecution timeMemory
1175721stdfloatPainting Walls (APIO20_paint)C++20
Compilation error
0 ms0 KiB
#include <bits/stdc++.h>
#include "paint.h"
#include "grader.cpp"
using namespace std;

#define sz(v)    (int)(v).size()
#define all(v)    (v).begin(), (v).end()

int minimumInstructions(int n, int m, int K, vector<int> C, vector<int> A, vector<vector<int>> B) {
	map<int, int> mp;
	for (auto i : C)
		mp[i] = 1;
	for (auto i : B) {
		for (auto j : i)
			mp[j] = 1;
	}

	K = 0;
	for (auto &i : mp)
		i.second = K++;

	for (auto &i : C)
		i = mp[i];
	for (auto &i : B) {
		for (auto &j : i)
			j = mp[j];
	}

	vector<vector<int>> F(K);
	for (int i = 0; i < m; i++) {
		for (auto j : B[i])
			F[j].push_back(i);
	}

	vector<vector<bool>> dp1(n, vector<bool>(m)), dp2(n, vector<bool>(m)); //dp1: 0 ... x,  dp2: x ... m - 1
	for (int i = 0; i < n; i++) {
		dp1[i][0] = (!F[C[i]].empty() && !F[C[i]][0]);

		if (i) {
			for (auto j : F[C[i]])
				if (j) dp1[i][j] = dp1[i - 1][j - 1];
		}
	}
	for (int i = n - 1; i >= 0; i--) {
		dp2[i][m - 1] = (!F[C[i]].empty() && F[C[i]].back() == m - 1);

		if (i != n - 1) {
			for (auto j : F[C[i]])
				if (j < m - 1) dp2[i][j] = dp2[i + 1][j + 1];
		}
	}

	// cout << "F\n";
	// for (auto i : F) {
	// 	for (auto j : i)
	// 		cout << j << ' ';
	// 	cout << endl;
	// }
	// cout << "\nC\n";
	// for (auto i : C)
	// 	cout << i << ' ';
	// cout << "\ndp1\n";
	// for (auto i : dp1) {
	// 	for (auto j : i)
	// 		cout << j << ' ';
	// 	cout << endl;
	// }
	// cout << "\ndp2\n";
	// for (auto i : dp2) {
	// 	for (auto j : i)
	// 		cout << j << ' ';
	// 	cout << endl;
	// }
	// cout << endl;

	vector<int> dp(n, (int)1e9);
	for (int i = m - 1; i < n; i++) {
		int mn = (int)1e9;
		for (int j = i - m; j < i; j++)
			mn = min(mn, (~j ? dp[j] : 0));

		bool tr = dp1[i][m - 1];
		for (int j = 1; j < m && !tr; j++)
			tr = (dp2[i - m + 1][j] && dp1[i][j - 1]);

		if (tr) dp[i] = mn + 1;
	}

	return (dp[n - 1] == (int)1e9 ? -1 : dp[n - 1]);
}

Compilation message (stderr)

/usr/bin/ld: /tmp/ccdopi2w.o: in function `main':
grader.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/ccVYXzck.o:paint.cpp:(.text.startup+0x0): first defined here
collect2: error: ld returned 1 exit status