Cod sursa(job #321730)

Utilizator andreioneaAndrei Onea andreionea Data 7 iunie 2009 01:12:22
Problema Dame Scor 95
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#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;
}