时间限制: 1 s
 空间限制: 1000 KB
 题目等级 : 黄金 Gold
题目描述 Description

给定一个长度为N(0<n<=10000)的序列,保证每一个序列中的数字a[i]是小于maxlongint的非负整数 ,编程要求求出整个序列中第k大的数字减去第k小的数字的值m,并判断m是否为质数。(0<k<=n)

输入描述 Input Description

第一行为2个数n,k(含义如上题)
第二行为n个数,表示这个序列

输出描述 Output Description

如果m为质数则
第一行为'YES'(没有引号)
第二行为这个数m
否则 
第一行为'NO'
第二行为这个数m

样例输入 Sample Input
5 2
1 2 3 4 5
样例输出 Sample Output
YES
2
数据范围及提示 Data Size & Hint

20%数据满足0<n<=10
50%数据满足0<n<=5000
100%数据满足0<n<=10000

splay查询第K大值和第K小值

坑点:差值可能小于0

素数在自然数范围内

屠龙宝刀点击就送

#include <ctype.h>
#include <cstdio>
#define N 20000
void read(long long &x)
{
x=;bool f=;
register char ch=getchar();
for(;!isdigit(ch);ch=getchar()) if(ch=='-') f=;
for(; isdigit(ch);ch=getchar()) x=(x<<)+(x<<)+ch-'';
x=f?(~x)+:x;
}
long long root,cn,tim,siz[N],ch[N][],fa[N],cnt[N];
long long data[N],n,k;
class type
{
private:
void pushup(long long rt)
{
long long l=ch[rt][],r=ch[rt][];
siz[rt]=siz[l]+siz[r]+cnt[rt];
}
public:
void ins(long long &rt,long long x)
{
if(rt==)
{
rt=++tim;
data[tim]=x;
siz[tim]=cnt[tim]=;
return;
}
if(data[rt]==x)
{
siz[rt]++;
cnt[rt]++;
return;
}
if(x<data[rt])
{
ins(ch[rt][],x);
fa[ch[rt][]]=rt;
pushup(rt);
}
else
{
ins(ch[rt][],x);
fa[ch[rt][]]=rt;
pushup(rt);
}
}
long long getkth(long long rt,long long k)
{
long long l=ch[rt][];
if(siz[l]+<=k&&k<=siz[l]+cnt[rt]) return data[rt];
if(k<siz[l]+) return getkth(ch[rt][],k);
if(siz[l]+cnt[rt]<k) return getkth(ch[rt][],k-(siz[l]+cnt[rt]));
}
bool pd(long long n)
{
if(n<) return false;
for(long long i=;i*i<=n;i++)
if(n%i==) return false;
return true;
}
};
class type *s;
int main()
{
read(n);read(k);
for(long long a,i=;i<=n;i++)
{
read(a);
s->ins(root,a);
}
long long k_min=s->getkth(root,k),k_max=s->getkth(root,n-k+),m=k_max-k_min;
bool f=s->pd(m);
f?puts("YES"):puts("NO");
printf("%lld\n",m);
return ;
}

codevs 1979 第K个数的更多相关文章

  1. codevs——1979 第K个数

    1979 第K个数  时间限制: 1 s  空间限制: 1000 KB  题目等级 : 黄金 Gold 题解       题目描述 Description 给定一个长度为N(0<n<=10 ...

  2. 1979 第K个数

    1979 第K个数 时间限制: 1 s 空间限制: 1000 KB 题目等级 : 黄金 Gold         题目描述 Description 给定一个长度为N(0<n<=10000) ...

  3. CODEVS——T1979 第K个数

    http://codevs.cn/problem/1979/ 时间限制: 1 s  空间限制: 1000 KB  题目等级 : 黄金 Gold 题解  查看运行结果     题目描述 Descript ...

  4. 扩展gcd codevs 1213 解的个数

    codevs 1213 解的个数  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题目描述 Description 已知整数x,y满足如下面的条件: ax+by ...

  5. 剑指Offer面试题:27.最小的k个数

    一.题目:最小的k个数 题目:输入n个整数,找出其中最小的k个数.例如输入4.5.1.6.2.7.3.8这8个数字,则最小的4个数字是1.2.3.4. 这道题是典型的TopK问题,其最简单的思路莫过于 ...

  6. 算法系列:寻找最大的 K 个数

    Copyright © 1900-2016, NORYES, All Rights Reserved. http://www.cnblogs.com/noryes/ 欢迎转载,请保留此版权声明. -- ...

  7. 算法练习:寻找最小的k个数

    参考July的文章:http://blog.csdn.net/v_JULY_v/article/details/6370650 寻找最小的k个数题目描述:查找最小的k个元素题目:输入n个整数,输出其中 ...

  8. 剑指Offer:面试题30——最小的k个数(java实现)

    问题描述: 输入n个整数,找出其中最小的k个数 思路1: 先排序,再取前k个 时间复杂度O(nlogn) 下面给出快排序的代码(基于下面Partition函数的方法) public void Quic ...

  9. 输入一个数组,求最小的K个数

    被这道题困了好久,看了剑指Offer才知道OJ上的要求有点迷惑性. 题目: 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4. 一 ...

随机推荐

  1. 基于jQuery仿淘宝产品图片放大镜特效

    在开发商城的时候,往往会用到图片的放大功能,这里把自己在近期项目中使用的放大镜特效做一下总结(非插件). 放大镜效果 常用的js组件jquery.imagezoom,jquery.jqzoom,jqu ...

  2. VC++编译说明

    目录 第1章编译步骤    1 第2章编译源文件    2 2.1 编译器    2 2.2 包含头文件    3 2.3 重复包含    6 2.4 预编译头文件    7 2.4.1 创建     ...

  3. web 基本概念辨异 —— URI 与 URL

    两者的相同点: 都是唯一的,对资源(R:Resource)起到唯一的标识作用: 两者的不同点: URL 是 URI 的子集(URI 是父类,URL 是子类),是一种特定的实现形式: URI 可以是身份 ...

  4. In-App Purchase Programming Guide----(六) ----Working with Subscriptions

    Working with Subscriptions Apps that use subscriptions have some additional behaviors and considerat ...

  5. Mysql数据库实现高可用

    Mysql实现高可用 MMM MMM(master-master replication manager for mysql)mysql主主复制管理器. MMM是一套灵活的脚本程序,基于perl实现, ...

  6. ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 14. ASP.NET Core Identity 入门

    默认的身份认证好授权系统 UserManager用来操作用户的类, Singi用来身份认证的 添加AccountController 先声明SignInManager和UserManager这两个服务 ...

  7. DPWL具关劳过农派广决建

    圆来压平便几从细样听二现当群世权半几影志土济长即江装家革候它准原打边社而从越何从式万难因造化阶求电么才论须指直很已毛有济做把活半或须白安共角争斗也重代只因识九少�

  8. C#文件读写参考

    string s = ""; string[] files = Directory.GetFiles(@"E:\u3d_warcraft\logic\logic\Batt ...

  9. 树莓派 zero w 一根线使用

    参考网站:https://sspai.com/post/40086 硬件: 一台mac电脑 一根micro b usb线 一块zero w板子 一张micro sd卡 一.制卡 格式化 烧写镜像文件 ...

  10. bzoj 1814: Ural 1519 Formula 1【插头dp】

    设f[i][j][s]为轮廓线推到格子(i,j),状态为s的方案数 括号表示一段线的左端和右端,表示成左括号和右括号,状压的时候用1和2表示,0表示已经闭合 下面的蓝线是黄色格子的轮廓线,dp转移要把 ...