Pagini recente » Cod sursa (job #1694712) | Cod sursa (job #1051335) | Cod sursa (job #1535644) | Cod sursa (job #1374783) | Cod sursa (job #1369491)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin ("grozavesti.in");
ofstream fout ("grozavesti.out");
int N, V[310][310];
struct sol { char c; int s1, s2; } aux;
vector < sol > S;
bool Verif()
{
for (int i = 1; i <= N; i++)
{
if (V[i][i] < V[i-1][i-1]) return 0;
}
return 1;
}
int main()
{
fin >> N;
for (int i = 1; i <= N; i++)
{
for (int j = 1; j <= N; j++)
{
fin >> V[i][j];
}
}
int i = 1;
while (!Verif())
{
int minim = max(V[i-1][i-1], V[i][i]), nr1, nr2;
char L = 'a';
for (int j = i + 1; j <= N; j++)
{
if (V[i][j] <= minim && V[i][j] >= V[i-1][i-1])
{
minim = V[i][j];
L = 'C';
nr1 = i;
nr2 = j;
}
if (V[j][i] <= minim && V[i][j] >= V[i-1][i-1])
{
minim = V[i][j];
L = 'L';
nr1 = i;
nr2 = j;
}
}
for (int j = i - 1; j >= 1; j--)
{
if (V[i][j] <= minim && V[i][j] >= V[i-1][i-1])
{
minim = V[i][j];
L = 'C';
nr1 = i;
nr2 = j;
}
if (V[j][i] <= minim && V[i][j] >= V[i-1][i-1])
{
minim = V[i][j];
L = 'L';
nr1 = i;
nr2 = j;
}
}
if (L != 'a')
{
for (int k = 1; k <= N; k++)
{
if (L == 'C')
{
swap (V[k][nr1], V[k][nr2]);
}
else
{
swap (V[nr1][k], V[nr2][k]);
}
}
aux.c = L;
aux.s1 = nr1;
aux.s2 = nr2;
S.push_back(aux);
}
i++;
}
fout << S.size() << '\n';
for (int i = 0; i < S.size(); i++)
{
fout << S[i].c << ' ' << S[i].s1 << ' ' << S[i].s2 << '\n';
}
fout.close();
return 0;
}