/*#include #include #include #include #include #include std::vector v; std::queue > out; std::vector > price; int blqh; int n; int fmp(int curr, int t) { int minp = price[curr][t]; int ans = -1; for(int i = curr; i < n; i++) { if(minp > price[curr][i] + price[i][t]) { minp = price[curr][i] + price[i][t]; ans = i; } } return ans; } int main() { std::fstream asdf; asdf.open("sorting.in", std::ios::in); asdf >> n; v.resize(n); for (int i = 0; i < n; i++) { asdf >> v[i]; } asdf >> blqh; price.resize(n); for(int i = 0 ; i < n; i++) { price[i].resize(n); for(int j = 0; j < n; j++) { asdf >> price[i][j]; } } asdf >> blqh; for(int i = 0 ; i < n; i++) { for(int j = 0; j < n; j++) { asdf >> blqh; price[i][j] += blqh; } } for (int i = 0; i < n; i++) { for(int j = i + 1; j < n; j++) { if(v[j] == i + 1) { auto currans = fmp(j, i); if(currans == -1) { out.push(std::make_pair(j, i)); std::swap(v[j], v[i]); } else { out.push(std::make_pair(j, currans)); out.push(std::make_pair(currans, i)); std::swap(v[j], v[currans]); std::swap(v[currans], v[i]); } } } } asdf.close(); asdf.clear(); asdf.open("sorting.out", std::ios::out); asdf << out.size() << "\n"; for(int i = 0; i < n; i++) { std::cout << v[i] << std::endl; } while (!out.empty()) { asdf << out.front().first + 1 << " " << out.front().second + 1 << "\n"; out.pop(); } asdf.close(); return 0; } */ #include #include #include #include #include #include std::vector v; std::queue> out; int main() { std::fstream asdf; asdf.open("sorting.in", std::ios::in); int n; asdf >> n; v.resize(n); for (int i = 0; i < n; i++) { asdf >> v[i]; } for (int i = 0; i < n; i++) { int min = v[i], minpos = i; for (int j = i + 1; j < n; j++) { if (min > v[j]) { min = v[j]; minpos = j; } } if (minpos != i) { out.push(std::make_pair(i, minpos)); std::swap(v[i], v[minpos]); } } asdf.close(); asdf.clear(); asdf.open("sorting.out", std::ios::out); asdf << out.size() << "\n"; while (!out.empty()) { asdf << out.front().first + 1 << " " << out.front().second + 1 << "\n"; out.pop(); } asdf.close(); return 0; }