Pagini recente » Cod sursa (job #2177505) | Cod sursa (job #2734241) | Cod sursa (job #190358) | Cod sursa (job #3263884) | Cod sursa (job #2338703)
#include <bits/stdc++.h>
using namespace std;
int v[305][305];
vector<pair<char, pair<int, int> > > ans;
int n;
void schimb(int p1, int p2){
ans.push_back(make_pair('C', make_pair(p1, p2)));
ans.push_back(make_pair('L', make_pair(p1, p2)));
for(int i = 1; i <= n; ++i)
swap(v[p1][i], v[p2][i]);
for(int i = 1; i <= n; ++i)
swap(v[i][p1], v[i][p2]);
}
void quick(int st, int dr){
if(st >= dr)
return;
int l = st, h = dr, mij = (st + dr) / 2;
int piv = v[mij][mij];
while(l < h){
while(v[l][l] < piv)
l++;
while(v[h][h] > piv)
h--;
if(l == h)
return;
schimb(l, h);
l++;
h--;
}
if(l <= h){
quick(st, l);
quick(h + 1, dr);
}
else{
quick(st, h);
quick(l, dr);
}
}
int main()
{
ifstream fin("grozavesti.in");
ofstream fout("grozavesti.out");
fin >> n;
for(int i = 1; i <= n; ++i){
for(int j = 1; j <= n; ++j)
fin >> v[i][j];
}
quick(1, n);
fout << ans.size() << "\n";
for(int i = 0; i < int(ans.size()); ++i)
fout << ans[i].first << " " << ans[i].second.first << " " << ans[i].second.second << "\n";
return 0;
}