Pagini recente » Cod sursa (job #1374037) | Cod sursa (job #186504) | Cod sursa (job #258618) | Cod sursa (job #2853600) | Cod sursa (job #663254)
Cod sursa(job #663254)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream in("sdo.in");
ofstream out("sdo.out");
const int N=3000001;
int v[N],frecv[N+100000];
int maxim=0,minim=1000000001;
int n,I,k;
void solve(){
int i;
maxim=0;
minim=1000000001;
for(i=1;i<=n;i++){
if(v[i]>maxim)
maxim=v[i];
if(v[i]<minim)
minim=v[i];
}
I=(maxim-minim+1)/N+1;
for(i=1;i<=n;i++){
frecv[v[i]/I]++;
}
int frecvtotal=0;
int poz=0;
for(i=1;i<=N;i++){
frecvtotal+=frecv[i];
if(frecvtotal>=k){
poz=i;
frecvtotal-=frecv[i];
break;
}
}
k-=frecvtotal;
int aux=0;
for(i=1;i<=n;i++){
if(v[i]/I==poz){
v[++aux]=v[i];
}
}
n=aux;
if(aux==1){
out<<v[1];
return;
}
solve();
}
int main(){
int i;
in>>n>>k;
for(i=1;i<=n;i++){
in>>v[i];
if(v[i]>maxim)
maxim=v[i];
if(v[i]<minim)
minim=v[i];
}
solve();
return 0;
}