234142026-01-22 08:34:25PappMatyasTűzijátékcpp17Hibás válasz 6/5075ms2644 KiB
#include <iostream>
#include <vector>

using namespace std;

const int NMAX = 100001;
vector<int> ans;
vector<int> adds;

static void GetAns(int index)
{
	if (index == -1)
	{
		return;
	}
	ans.push_back(index + 1);
	GetAns(adds[index]);
}

int main()
{
	int n, m, d;
	cin >> n >> m >> d;

	vector<int> p(n);
	

	for (int i = 0; i < n; i++)
	{
		cin >> p[i];
		adds.push_back(-1);
	}
	m--;
	int comp = p[m];
	vector<int> dp(n, 1);
	dp[0] = 1;
	adds[0] = -1;
	for (int i = 1; i < n; i++)
	{
		int val = p[i];
		if (abs(val - comp) < d && i != m)
		{
			dp[i] = -NMAX;
			p[i] = -1;
			continue;
		}
		int index = i - 1;
		int maxim = -1;
		int s = -1;
		while ((val - p[index] < d || dp[index] <= 0) && index > 0)
		{
			if (maxim < dp[index] + 1 && p[i] != -1)
			{
				maxim = dp[index] + 1;
				s = index;
			}
			index--;
		}
		if (val - p[index] >= d)
		{
			if (maxim <= 0 && dp[index] <= 0)
			{
				dp[i] = 1;
				adds[i] = -1;
			}
			else if (maxim > 1 + dp[index] || p[index] == -1)
			{
				dp[i] = maxim;
				adds[i] = s;
			}
			else
			{
				dp[i] = dp[index] + 1;
				adds[i] = index;
			}
		}
		else
		{
			dp[i] = 1;
			adds[i] = -1;
		}
	}
	cout << dp[n - 1] << endl;
	GetAns(n - 1);
	int size = ans.size();
	for (int i = size - 1; i >= 0; i--)
	{
		cout << ans[i] << " ";
	}
	cout << endl;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base6/50
1Elfogadva0/02ms316 KiB
2Hibás válasz0/059ms2604 KiB
3Elfogadva2/22ms400 KiB
4Elfogadva2/21ms316 KiB
5Elfogadva2/21ms380 KiB
6Hibás válasz0/21ms316 KiB
7Hibás válasz0/21ms508 KiB
8Hibás válasz0/21ms316 KiB
9Hibás válasz0/24ms552 KiB
10Hibás válasz0/24ms500 KiB
11Hibás válasz0/26ms488 KiB
12Hibás válasz0/210ms820 KiB
13Hibás válasz0/210ms760 KiB
14Hibás válasz0/210ms676 KiB
15Hibás válasz0/39ms844 KiB
16Hibás válasz0/317ms1076 KiB
17Hibás válasz0/323ms1352 KiB
18Hibás válasz0/328ms2080 KiB
19Hibás válasz0/361ms2572 KiB
20Hibás válasz0/359ms2644 KiB
21Hibás válasz0/459ms2488 KiB
22Hibás válasz0/475ms2568 KiB