Website Summary Files Commits Branches @commit @diff @stats
path: root / pract_SI / Pract. 09 / task7.cpp
blob: 5065a6df22b3f0f809ea61598cc2f08822ec61bb (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <vector>

bool checkIsPalindrom(const vector<int>& v)
{
	//if (v.size() < 2) - not needed as for-loop covers this case.
	//	return true;

	for (size_t i = 0; i < v.size() / 2; i++)
		if (v[i] != v[v.size() - 1 - i])
			return false;

	return true;
}

bool isPalindrom(const std::vector<int>& v, int operations)
{
	if(v.empty())
		return false;

	if (operations < 0)
		return false;

	if (checkIsPalindrom(v))
		return true;

	std::vector<int> left = v, right = v;
	left.erase(left.begin()); //remove first
	right.pop_back(); //remove last
	operations--;
	
	return isPalindrom(left, operations) || isPalindrom(right, operations);
}