Cod sursa(job #129112)

Utilizator Omega91Nicodei Eduard Omega91 Data 28 ianuarie 2008 17:42:32
Problema Grozavesti Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.35 kb
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
	long k, n, i, j, aux, cont[1000001] = {}, vec[301]={}, vecsort[301]={}, rasp = 0, c[301][2]={}, l[301][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;}
		}
	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;
}