Pagini recente » Cod sursa (job #217960) | Cod sursa (job #2359418) | Cod sursa (job #1267070) | Cod sursa (job #424227) | Cod sursa (job #1348319)
#include <fstream>
using namespace std;
ifstream fin("dame.in");
ofstream fout("dame.out");
int N, lista[1002], rest, start_impar;
int main() {
fin >> N;
// Inseram elementele pare
for(int i = 2; i <= N; i += 2) {
lista[++lista[0]] = i;
}
rest = N % 12;
// Daca restul este 3 sau 9, se muta 2 la sfarsitul listei
if(rest == 3 || rest == 9) {
for(int i = 2; i <= lista[0]; i++) {
lista[i - 1] = lista[i];
}
lista[lista[0]] = 2;
}
// Inseram elementele impare
start_impar = lista[0] + 1;
for(int i = 1; i <= N; i += 2) {
lista[++lista[0]] = i;
}
// Daca restul este 8, interschimbam perechile de numere impare (3,1,7,5..)
if(rest == 8) {
for(int i = start_impar; i <= lista[0]; i += 2) {
swap(lista[i], lista[i + 1]);
}
}
// Daca restul este 2, interschimbam 1 cu 3 si 5 se muta la sfarsitul listei
if(rest == 2) {
swap(lista[start_impar], lista[start_impar + 1]);
for(int i = start_impar + 3; i <= lista[0]; i++) {
lista[i - 1] = lista[i];
}
lista[lista[0]] = 5;
}
// Daca restul este 3 sau 9, mutam 1 si 3 la finalul listei
if(rest == 3 || rest == 9) {
for(int i = start_impar + 2; i <= lista[0]; i++) {
lista[i - 2] = lista[i];
}
lista[lista[0] - 1] = 1;
lista[lista[0]] = 3;
}
// Afisam sol
if(N == 1) {
fout << "1\n1 1\n";
return 0;
}
if(N == 2) {
fout << "1\n1 1\n";
return 0;
}
if(N == 3) {
fout << "2\n1 1\n2 3\n";
return 0;
}
fout << N << '\n';
for(int i = 1; i <= N; i++) {
fout << i << ' ' << lista[i] << '\n';
}
fin.close();
fout.close();
return 0;
}