Pagini recente » Cod sursa (job #1445193) | Cod sursa (job #2520799) | Cod sursa (job #3244423) | Cod sursa (job #2520813) | Cod sursa (job #1376292)
#include <fstream>
#include <vector>
using namespace std;
struct Inversion {
Inversion(unsigned from, unsigned to) :
from(from), to(to) {}
unsigned from;
unsigned to;
};
vector<Inversion> get_inversions(vector<unsigned> data) {
vector<Inversion> inversions;
for(int i = 0; i < data.size(); ++i) {
for(int j = i+1; j < data.size(); ++j) {
if(data[i] > data[j]) {
inversions.push_back({i,j});
swap(data[i],data[j]);
}
}
}
return inversions;
}
void print_inversions(ofstream &out, vector<Inversion> inversions) {
out << inversions.size() << ' ';
for(Inversion inversion:inversions) {
out << "C " << inversion.from+1 << ' ' << inversion.to+1 << '\n';
out << "L " << inversion.from+1 << ' ' << inversion.to+1 << '\n';
}
}
int main() {
ifstream in("grozavesti.in");
ofstream out("grozavesti.out");
unsigned n;
in >> n;
vector<unsigned> diagonal(n);
for(int i = 0; i < n; ++i) {
for(int j = 0; j < n; ++j) {
int val;
in >> val;
if(i == j) {
diagonal[i] = val;
}
}
}
print_inversions(out,get_inversions(diagonal));
return 0;
}