Pagini recente » Cod sursa (job #3187729) | Cod sursa (job #602910) | Cod sursa (job #2294753) | Cod sursa (job #407237) | Cod sursa (job #1443163)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream fin("dame.in");
ofstream fout("dame.out");
inline void swep(int &a, int &b){
int aux = a;
a = b;
b = aux;
}
int main()
{
int n;
fin >> n;
if(n == 1 || n == 2){
fout << "1\n1 1";
return 0;
}
if(n == 3){
fout << "2\n1 1\n2 3";
return 0;
}
vector < int > v;
for(int i = 2; i <= n; i += 2){
v.push_back(i);
}
if(n % 12 == 3 || n % 12 == 9){
v.erase(v.begin());
v.push_back(2);
}
for(int i = 1; i <= n; i += 2){
v.push_back(i);
}
if(n % 12 == 8){
for(int i = 0; i + 1 < v.size(); i++){
if(v[i] % 2 == 1){
swep(v[i], v[i + 1]);
i++;
}
}
}
if(n % 12 == 2){
v.erase(find(v.begin(), v.end(), 5));
v.push_back(5);
vector < int > :: iterator it = find(v.begin(), v.end(), 1);
swep(*it, *(it + 1));
}
if(n % 12 == 3 || n % 12 == 9){
v.erase(find(v.begin(), v.end(), 1));
v.erase(find(v.begin(), v.end(), 3));
v.push_back(1);
v.push_back(3);
}
fout << n << "\n";
for(int i = 0; i < v.size(); i++){
fout << i + 1 << " " << v[i] << "\n";
}
return 0;
}