比赛 |
普及组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 ;
}