Pagini recente » Cod sursa (job #712718) | Cod sursa (job #1680784) | oni2006runda2 | Cod sursa (job #2721589) | Cod sursa (job #129158)
Cod sursa(job #129158)
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
long k, n, i, j, aux, cont[1000001] = {}, vec[301]={}, vecsort[301]={}, rasp = 0, c[603][2]={}, l[602][2]={};
bool stop = false;
ifstream f1("grozavesti.in");
ofstream f2("grozavesti.out");
f1 >> n;
k = 0;
for (i = 0; i < n; ++i)
for (j = 0; j < n; ++j) {
f1 >> aux;
if (i == j) { ++cont[aux]; vec[k++] = aux;}
}
// for (i = 0; i < n; ++i) {
// f1 >> aux;
// ++cont[aux];
// vec[k++] = aux;
// }
k = 0;
i = 1;
while ( k < n ) {
if (cont[i]) {
vecsort[k++] = i;
--cont[i];
}
else ++i;
}
// for (i = 0; i <n ;++i)
// cout << vecsort[i] << " ";
// cout << endl;
// cout << endl;
// for (i = 0; i< n; ++i)
// cout << vec[i] << " ";
// cout << endl;
while(!stop) {
stop = true;
for (i = 0; i < n; ++i) {
if ( vecsort[i] != vec[i] ) {
stop = false;
for (j = 0; j < n; ++j)
if (( vec[i] == vecsort[j] ) && ( vecsort[j] != vec[j] )) {
rasp += 2;
c[rasp - 1][0] = i + 1;
c[rasp - 1][1] = j + 1;
l[rasp][0] = i + 1;
l[rasp][1] = j + 1;
aux = vec[i];
vec[i] = vec[j];
vec[j] = aux;
break;
}
// for (i = 0; i< n; ++i)
// cout << vec[i] << " ";
// cout << endl;
}
}
}
f2 << rasp << endl;
cout << rasp << endl;
for (i = 1; i <= rasp; ++i)
if (i % 2) f2 << "C " << c[i][0] << " " << c[i][1] << " \n";
else f2 << "L " << l[i][0] << " " << l[i][1] << " \n";
f1.close();
f2.close();
return 0;
}