比赛 普及组2016模拟练习3 评测结果 AAAAAAAAAA
题目名称 圆桌会议 最终得分 100
用户昵称 asd 运行时间 0.042 s
代码语言 C++ 内存使用 0.29 MiB
提交时间 2016-11-15 20:29:36
显示代码纯文本
#include<stdio.h>
#include<stdlib.h>
int n,k,s,h[11],a[12],book[11],pos[11];// a原始数据 pos每个位置的编号  
void find();

void step(int kk);

void readl()
{ int i;
  FILE * f;
  f=fopen("round.in","r");
  
  fscanf(f,"%d %d",&n,&k);
  
  for(i=1;i<=n;i++)
  fscanf(f,"%d",&h[i]);
  fclose(f);
  
  return ;	
}

void print()
{ FILE * f;
  f=fopen("round.out","w");
  
  fprintf(f,"%d",s);
  
  fclose(f);
  return ;
}

int cmp(const void *a,const void * b)
{ int * x=(int *)a;
  int * y=(int *)b;
   if(*x>*y) return 1;
        else return -1; 
}

int jue(int x,int y)
{ if(x>y) return x-y;
     else return y-x;
}

int main()
{  readl();
   find();	
   print();	
   return 0;	
}

void find()
{ int i,j;
  qsort(h+1,n,sizeof(h[0]),cmp);	
  
  a[1]=h[1];
  
  a[n+1]=h[1];
  
  //pos[1]=h[1][1]; 
  book[1]=1;
  
  step(2); 	
  
  return ;
}

void step(int kk)
{ int i;
  if(kk>n) {if(jue(a[n],a[n+1])<=k) s++;return;}
  
  for(i=1;i<=n;i++)
  if(book[i]==0&&(jue(a[kk-1],h[i])<=k))
  { book[i]=1;
    a[kk]=h[i];
  
  	step(kk+1);
  
  	book[i]=0;
  }	
  return ;	
}