| Task: | Käännöt |
| Sender: | Levente |
| Submission time: | 2023-11-12 22:13:53 +0200 |
| Language: | C++ (C++11) |
| Status: | COMPILE ERROR |
Compiler report
input/code.cpp: In function 'std::vector<int> findOperations(std::vector<int>&, int)':
input/code.cpp:16:27: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
16 | for (int i = 0; i < a.size(); ++i)
| ~~^~~~~~~~~~
input/code.cpp:18:31: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
18 | for (int j = 0; j < a.size() - 1; ++j)
| ~~^~~~~~~~~~~~~~
input/code.cpp:31:27: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
31 | for (int i = 0; i < a.size(); ++i)
| ~~^~~~~~~~~~
input/code.cpp:35:31: error: no matching function for call to 'find(std::vector<int>::iter...Code
#include <iostream>
#include <vector>
using namespace std;
bool canSort(int n, int k)
{
return k == 2 || k % 2 == 1;
}
vector<int> findOperations(vector<int> &a, int k)
{
vector<int> ops;
if (k == 2)
{
// Bubble sort logic for k = 2
for (int i = 0; i < a.size(); ++i)
{
for (int j = 0; j < a.size() - 1; ++j)
{
if (a[j] > a[j + 1])
{
swap(a[j], a[j + 1]);
ops.push_back(j + 1);
}
}
}
}
else
{
// Logic for k > 2 and odd
for (int i = 0; i < a.size(); ++i)
{
while (a[i] != i + 1)
{
int idx = find(a.begin(), a.end(), i + 1) - a.begin();
int start = max(0, idx - k + 1);
reverse(a.begin() + start, a.begin() + start + k);
ops.push_back(start + 1);
}
}
}
return ops;
}
int main()
{
int n, k;
cin >> n >> k;
vector<int> a(n);
for (int &x : a)
cin >> x;
if (!canSort(n, k))
{
cout << "NO\n";
return 0;
}
vector<int> ops = findOperations(a, k);
cout << "YES\n";
cout << ops.size() << "\n";
for (int op : ops)
cout << op << " ";
cout << "\n";
return 0;
}
