/*==========================================
P1001 第K极值
内存限制 128MB 代码限制 64KB
描述 Description
给定一个长度为N(0<n<=10000)的序列,保证每一个序列中的数字a[i]是
小于maxlongint的非负整数 ,编程要求求出整个序列中第k大的数字减去
第k小的数字的值m,并判断m是否为质数。(0<k<=n)
输入格式 InputFormat
输入格式:
第一行为2个数n,k(含义如上题)
第二行为n个数,表示这个序列
输出格式 OutputFormat
输出格式:
如果m为质数则
第一行为'YES'(没有引号)
第二行为这个数m
否则
第一行为'NO'
第二行为这个数m
样例输入 SampleInput
5 2
1 2 3 4 5
样例输出 SampleOutput
YES
2 数据范围和注释 Hint
对于第K大的详细解释:
如果一个序列为1 2 2 2 2 3
第1大 为3
第2大 为2
第3大 为2
第4大 为2
第5大 为1
第K小与上例相反 另外需要注意的是
最小的质数是2,如果小于2的话,请直接输出NO
============================================*/
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int fun(long n);//判断n是否质数,是则返回1,否则返回0;
int cmp(const void *a,const void *b);
int main()
{
long n,k,*a,i,m;
scanf("%ld%ld",&n,&k);
a=(long *)malloc(n*sizeof(long));
for(i=;i<n;i++)
scanf("%ld",&a[i]);
qsort(a,n,sizeof(long),cmp);
m=a[n-k]-a[k-];
i=fun(m);
if(i==) printf("YES\n%ld\n",m);
else printf("NO\n%ld\n",m);
return ;
}
int fun(long n)//判断n是否质数,是则返回1,否则返回0;
{
long i,t;
if(n<) return ;
t=sqrt(n);
for(i=;i<=t;i++)
{
if(n%i==) return ;
}
return ;
}
int cmp(const void *a,const void *b)
{
return *(long *)a-*(long *)b;
}

这个题呢要用long类型数据。要注意第k大数减去第k小数有可能是负数。质数检测也要注意写正确。可以使用快排的就用快排。

好久没写OJ的题目了,再过来看看写写倍觉亲切啊

P1001 第K极值【tyvj】的更多相关文章

  1. tyvj——P1001 第K极值

    P1001 第K极值 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 成成第一次模拟赛 第一道 描述 给定一个长度为N(0<n<=10000)的序 ...

  2. P1001 第K极值

    P1001 第K极值 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 成成第一次模拟赛 第一道 描述 给定一个长度为N(0<n<=10000)的序 ...

  3. [TYVJ] P1001 第K极值

    第K极值   背景 Background 成成第一次模拟赛 第一道    描述 Description 给定一个长度为N(0<n<=10000)的序列,保证每一个序列中的数字a[i]是小于 ...

  4. TYVJ P1001 第K极值 Label:水

    背景 成成第一次模拟赛 第一道 描述 给定一个长度为N(0<n<=10000)的序列,保证每一个序列中的数字a[i]是小于maxlongint的非负整数 ,编程要求求出整个序列中第k大的数 ...

  5. 学习笔记--函数式线段树(主席树)(动态维护第K极值(树状数组套主席树))

    函数式线段树..资瓷 区间第K极值查询 似乎不过似乎划分树的效率更优于它,但是如果主席树套树状数组后,可以处理动态的第K极值.即资瓷插入删除,划分树则不同- 那么原理也比较易懂: 建造一棵线段树(权值 ...

  6. [Tyvj1001]第K极值 (贪心?模拟)

    考前打tyvj的水题 题目描述 给定一个长度为N(0<n<=10000)的序列,保证每一个序列中的数字a[i]是小于maxlongint的非负整数 ,编程要求求出整个序列中第k大的数字减去 ...

  7. 分治法:快速排序求第K极值

    标题其实就是nth_element函数的底层实现 nth_element(first, nth, last, compare) 求[first, last]这个区间中第n大小的元素 如果参数加入了co ...

  8. 【算法学习】有旋treap

    treap是平衡树的一种.与其他平衡树一样,它也能够支持插入和删除,求第k极值等,接下来我们主要探讨有旋treap的实现过程. treap中每个节点要维护其值,左右孩子以及子树大小.父亲要不要写则看你 ...

  9. django模型操作

    Django-Model操作数据库(增删改查.连表结构) 一.数据库操作 1.创建model表        

随机推荐

  1. Http请求与响应格式

    原文:http://www.cnblogs.com/z941030/p/4699779.html Http协议对浏览器发出的Request格式以及对Web服务器发出的Response格式有具体的规定. ...

  2. Python文本(字面值)

    Python中的文本是一些内置类型的常量表示方法. 字符串和字节 字符串是一系列的字符序列,Python中用单引号(''),双引号(""),或者三个单引号(''' ''')三个双引 ...

  3. PHP实现简单计算器

    <!--简单的计算器--> <!DOCTYPE html> <html> <head> <title>PHP实现简单计算器</titl ...

  4. linux常用命令:2权限管理命令

    权限管理命令 1.权限管理命令:chmod 命令名:chmod 命令英文原意:change the permissions mode of a file 命令所在路径:/bin/chmod 执行权限: ...

  5. Spring处理器

    Spring容器内部工作机制 Spring的AbstractApplicationContext是ApplicationContext抽象实现类,该抽象类的refresh()方法定义了Spring容器 ...

  6. iOS log第三方库之间的对比

  7. 11、网页制作Dreamweaver(补充:JS零碎知识点&&正则表达式)

    JS知识点 回车符/r和换行符/n的区别:/r 相当于enter,是段落与段落之间的区别, /n 相当于shift+enter,是行与行之间距离,比较小 几种window操作方法: 1.获取当前窗口大 ...

  8. CODEVS1073 家族 (并查集)

    一道裸的并查集,练练手不错. program CODEVS1073; var i,j,m,n,q,x,y,k1,k2,z:longint; f:..] of longint; function fin ...

  9. 在SourceInsight中用快捷键打开文件所在的目录

    创建一个Custom Command:  ShellExecute open %d.  然后关联一个快捷键.

  10. 从Wordpress迁移到Jekyll

    http://pinkyjie.com/2013/10/24/migrate-from-wordpress-to-jekyll/ 上周末闲着没事干突然想把博客从Wordpress迁移到Github p ...