Pagini recente » Cod sursa (job #1282267) | Cod sursa (job #507415) | Cod sursa (job #2048772) | Cod sursa (job #1611276) | Cod sursa (job #321730)
Cod sursa(job #321730)
#include<deque>
#include<fstream>
using namespace std;
#define INFILE "dame.in"
#define OUTFILE "dame.out"
deque<int> reg;
int n;
void citire()
{ifstream f(INFILE);
f>>n;
f.close();
}
void solve()
{int i,r;
r=n%12;
for(i=2;i<=n;i+=2) reg.push_back(i);
if(r==3 || r==9)
{reg.pop_front();
reg.push_back(2);
}
if(r==2)
{if(n>=3) reg.push_back(3);
reg.push_back(1);
for(i=7;i<=n;++i) reg.push_back(i);
if(n>=5) reg.push_back(5);
}
else if(r==3 || r==9)
{for(i=5;i<=n;i+=2) reg.push_back(i);
reg.push_back(1);
reg.push_back(3);
}
else if(r==8)
{for(i=1;i<=n;i+=4)
{if(i+2<=n)
{reg.push_back(i+2); reg.push_back(i);
}
else {reg.push_back(i); break;}
}
}
else for(i=1;i<=n;i+=2) reg.push_back(i);
}
void afis()
{ofstream g(OUTFILE);
if(n==2 || n==3)
{g<<n-1<<endl;
g<<1<<" "<<1<<endl;
if(n==3) g<<2<<" "<<3<<endl;
}
else
{int i;
deque<int>::iterator it;
g<<n<<endl;
solve();
for(it=reg.begin(),i=1;it!=reg.end();++it,++i) g<<i<<" "<<*it<<endl;
g.close();
}
}
int main()
{citire();
afis();
return 0;
}