Pagini recente » Cod sursa (job #6825) | Monitorul de evaluare | Cod sursa (job #43028) | Cod sursa (job #2698376) | Cod sursa (job #483651)
Cod sursa(job #483651)
#include<fstream>
#include<algorithm>
using namespace std;
ifstream f ("dame.in");
ofstream g ("dame.out");
const int MaxN = 1 << 10;
int N,v[MaxN];
void solve()
{
int i,dim,rest = N % 12;
dim = 0;
for( i = 1 ; i << 1 <= N ; i++)
v[++dim] = i << 1;
if( rest == 3 || rest == 9)
{
dim = 0;
for( i = 2 ; i << 1 <= N ; i++)
v[++dim] = i << 1;
v[++dim] = 2;
}
int nr = dim;
for( i = 1 ; i <= N ; i+= 2 )
v[++dim] = i;
if( rest == 8)
{
for( i = nr + 1 ; i <= dim ; i+= 2)
swap(v[i],v[i+1]);
}
if( rest == 2)
{
dim = nr;
v[++dim] = 3;
v[++dim] = 1;
for( i = 7 ; i <= N ; i += 2)
v[++dim] = i;
v[++dim] = 5;
}
if( rest == 3 || rest == 9 )
{
dim = nr ;
for( i = 5 ; i <= N ; i += 2)
v[++dim] = i;
v[++dim] = 1;
v[++dim] = 3;
}
}
void print()
{
int i;
if( N == 1 || N == 2)
g << "1\n1 1\n";
else
if(N == 3)
g << "2\n1 1\n2 3\n";
else
{
g << N << '\n';
for( i = 1 ; i <= N ; i++)
g << i << ' ' << v[i] << '\n';
}
}
int main ()
{
f >> N ;
solve();
print();
f.close();
g.close();
return 0;
}