定義乙個長度為奇數的區間的值為其所包含的的元素的中位數。
現給出n個數,求將所有長度為奇數的區間的值排序後,第k大的值為多少。
輸入格式:
輸入檔名為kth.in。
第一行兩個數n和k
第二行,n個數。(0<=每個數<2^31)
輸出格式:
乙個數表示答案
輸入樣例#1:
4 3輸出樣例#1:3 1 2 4【樣例解釋】[l,r]表示區間l~r的值
[1,1]:3
[2,2]:1
[3,3]:2
[4,4]:4
[1,3]:2
[2,4]:2
2對於30%的資料,1<=n<=100;
對於60%的資料,1<=n<=300
對於80%的資料,1<=n<=1000
對於100%的資料,1<=n<=100000, k<=奇數區間的數
1/*2view code二分答案t,統計中位數大於等於t的區間有多少個。
3設a[i]為前i個數中有a[i]個數》=t,若奇數區間[l,r]的中位數》=t,則(a[r]-a[l-1])*2>r-l+1,即(a[r]*2-r)>(a[l-1]*2-l+1)。
4設b[i]=a[i]*2-i,統計每個b[i]有多少個b[j]5*/6
7 #include8 #include9 #include10 #include11 #include12
#define n 100005
13using
namespace
std;
1415
long
long
n,k,ans;
16int a[n],b[n],c[n],f[2][n*3
];17
18 inline int lowbit(int
x)19
2223 inline void add(int x,int
p)24
2829 inline int query(int x,int
p)30
3637
long
long check(int
x)38
45for(int i=1;i<=n;i++)
4649 add(n,0
);50
for(int i=1;i<=n;i++)
5155
return
sum;56}
5758 inline void
init()
5966 sort(b+1,b+n+1
);67
int l=1,r=n+1,mid=(l+r)>>1;68
while(l+1
6974 printf("%d"
,b[l]);75}
7677
intmain()
78
2017 10 4 國慶清北 D4T2 正方形
在乙個10000 10000的二維平面上,有n顆糖果。lyk喜歡吃糖果!並且它給自己立了規定,一定要吃其中的至少c顆糖果!事與願違,lyk只被允許圈出乙個正方形,它只能吃在正方形裡面的糖果。並且它需要支付正方形邊長的價錢。lyk為了滿足自己的求食慾,它不得不花錢來圈乙個正方形,但它想花的錢盡可能少,...
2016國慶清北Day2T1
pa 題目描述 漢諾塔公升級了 現在我們有n個圓盤和n個柱子,每個圓盤大小都不一樣,大的圓盤不能放在小的圓盤上面,n個柱子從左到右排成一排。每次你可以將一 個柱子上的最上面的圓盤移動到右邊或者左邊的柱子上 如果移動之後是合法的 話 現在告訴你初始時的狀態,你希望用最少的步數將第i 大的盤子移動到第i...
常州模擬賽d7t2 陣列
hjz 的陣列初始時有 n 個元素。他可以把乙個位置上的數加上或減去乙個固定的 數 x。一天 ljz 和 hzy 來 hjz 家玩。ljz 突發奇想,提出了乙個問題 如何在給定的 操作步數內最小化陣列所有元素的乘積呢?hjz 百思不得其解,但是他想博得 hzy 的好感,就把這個問題交給你啦 由於最小...