Pagini recente » Cod sursa (job #1761108) | Cod sursa (job #3279993) | Cod sursa (job #3271565) | Cod sursa (job #467358) | Cod sursa (job #1048691)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream in("triang.in");
ofstream out("triang.out");
struct shp{
int a,b;
inline bool operator < (const shp &dr) const
{
if(min(a,b)==min(dr.a,dr.b))
return max(a,b)<max(dr.a,dr.b);
else return min(a,b)<min(dr.a,dr.b);
}
shp(int x,int y)
{
a=x;
b=y;
}
shp()
{
a=b=0;
}
};
inline bool inter(const shp &x,const shp &y)
{
if(y.a>x.a && y.a<x.b && !(y.b>=x.a && y.b<=x.b)) return 1;
if(y.b>x.a && y.b<x.b && !(y.a>=x.a && y.a<=x.b)) return 1;
return 0;
}
int lan[12],n;
shp v[59000];
int valid(int k){
int ok=1;
for(int i=1;i<k;i++)
{
ok=!inter(v[i],v[k]) && v[i]<v[i+1];
}
return ok;
}
void afisare(){
for(int i=1;i<=n-3;i++) out<<v[i].a<<" "<<v[i].b<<" ";
out<<endl;
}
void back(int k){
for(int i=1;i<=n-2;i++){
for(int j=i+2;j<=n && !(i==1 && j==n);j++){
v[k].a=i;
v[k].b=j;
if(valid(k)==1){
if (k == n-3) afisare();
else back(k+1);
}
}
}
}
int main()
{
lan[0]=1;
lan[1]=1;
lan[2]=2;
lan[3]=5;
lan[4]=14;
lan[5]=42;
lan[6]=132;
lan[7]=429;
lan[8]=1430;
lan[9]=4862;
lan[10]=16796;
lan[11]=58786;
lan[12]=208012;
in>>n;
out<<lan[n-2]<<endl;
back(1);
return 0;
}