Pagini recente » Cod sursa (job #2809946) | Istoria paginii runda/test_001 | Cod sursa (job #2456990) | Cod sursa (job #1002285) | Cod sursa (job #1804448)
#include <fstream>
#include <vector>
#include <cstring>
#include <algorithm>
using namespace std;
ifstream fin("dame.in");
ofstream fout("dame.out");
int main() {
int n; fin >> n;
if (n == 1 || n == 2) {
fout << "1\n1 1\n";
return 0;
}
if (n == 3) {
fout << "2\n1 1\n3 2\n";
return 0;
}
vector<int> perm;
for (int i = 2; i <= n; i += 2)
perm.push_back(i);
int modulo12 = n % 12;
if (modulo12 == 3 || modulo12 == 9) {
perm.erase(perm.begin());
perm.push_back(2);
}
for (int i = 1; i <= n; i += 2)
perm.push_back(i);
if (modulo12 == 8)
for (size_t i = 0; i < perm.size(); ++i)
if (perm[i] % 4 == 1)
swap(perm[i], perm[i + 1]), ++i;
if (modulo12 == 2) {
auto it = perm.begin();
while (*it != 1)
it++;
swap(*it, *(it+1));
perm.erase(it + 2);
perm.push_back(5);;
}
if (modulo12 == 3 || modulo12 == 9) {
auto it = perm.begin();
while (*it != 1)
it++;
perm.erase(it, it+2);
perm.push_back(1);
perm.push_back(3);
}
fout << n << '\n';
for (int i = 1; i <= n; ++i)
fout << i << ' ' << perm[i - 1] << '\n';
return 0;
}
//Trust me, I'm the Doctor!