Pagini recente » Cod sursa (job #2029816) | Cod sursa (job #3238656) | Cod sursa (job #1599713) | Cod sursa (job #1229380) | Cod sursa (job #136119)
Cod sursa(job #136119)
#include <stdio.h>
using namespace std;
#include <sstream>
#include <vector>
#define in "grozavesti.in"
#define out "grozavesti.out"
#define NMAX 305
int n;
int A[NMAX][NMAX];
vector<string> sol;
int main()
{
freopen( in, "r", stdin );
freopen( out, "w", stdout );
scanf( "%d", &n );
int i, j, k;
for ( i = 1; i <= n; ++i )
for ( j = 1; j <= n; ++j )
scanf( "%d", &A[i][j] );
int minim, ipoz, jpoz;
for ( i = 1; i <= n; ++i )
{
ostringstream ss;
string prov = "";
// matricea cu coltul din stanga-sus in (i,i)
minim = 1000111;
for ( j = i; j <= n; ++j )
{
for ( k = i; k <= n; ++k )
{
if ( A[j][k] < minim ) { minim = A[j][k]; ipoz = j; jpoz = k; }
}
}
if ( ipoz == i && jpoz == i ) continue;
else if ( ipoz == i && jpoz != i )
{
for ( j = 1; j <= n; ++j )
{
int aux = A[j][i];
A[j][i] = A[j][jpoz];
A[j][jpoz] = aux;
}
//printf( "C %d %d\n", i, jpoz );
ss << "C "; ss << i << " " << jpoz;
prov = ss.str();
sol.push_back( prov );
}
else if ( ipoz != i && jpoz == i )
{
for ( j = 1; j <= n; ++j )
{
int aux = A[i][j];
A[i][j] = A[ipoz][j];
A[ipoz][j] = aux;
}
//printf( "L %d %d\n", ipoz, i );
ss << "L "; ss << i << " " << ipoz;
prov = ss.str();
sol.push_back( prov );
}
else if ( i != ipoz && i != jpoz )
{
for ( j = 1; j <= n; ++j )
{
int aux = A[j][i];
A[j][i] = A[j][jpoz];
A[j][jpoz] = aux;
}
for ( j = 1; j <= n; ++j )
{
int aux = A[i][j];
A[i][j] = A[ipoz][j];
A[ipoz][j] = aux;
}
//printf( "C %d %d\n", i, jpoz );
ss << "C "; ss << i << " " << jpoz;
prov = ss.str();
sol.push_back( prov );
//printf( "L %d %d\n", i, ipoz );
ostringstream sss;
prov = "";
sss << "L "; sss << i << " " << ipoz;
prov = sss.str();
sol.push_back( prov );
}
/*
for ( i = 1; i <= n; ++i )
{
for ( j = 1; j <= n; ++j )
printf( "%d ", A[i][j] );
printf( "\n" );
}
printf( "\n" );*/
}
printf( "%d\n", sol.size() );
for ( i = 0; i < sol.size(); ++i )
printf( "%s\n", sol[i].c_str() );
for ( i = 1; i <= n; ++i )
{
for ( j = 1; j <= n; ++j )
printf( "%d ", A[i][j] );
printf( "\n" );
}
return 0;
}