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 = 2for (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 oddfor (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;}