Pagini recente » Cod sursa (job #3001302) | Cod sursa (job #3183930) | Borderou de evaluare (job #152078) | Cod sursa (job #1742410) | Cod sursa (job #645167)
Cod sursa(job #645167)
#include<stdio.h>
#include<vector>
#include<algorithm>
using namespace std;
int v[50001];
int frecventa[2100000];
typedef struct{int numar,valoare;}pereche;
pereche u[1000000];
int main()
{
int k=0,j=0,i,N,K,suma=0;
freopen("sume2.in","r",stdin);
freopen("sume2.out","w",stdout);
scanf("%d%d",&N,&K);
for(i=0;i<N;i++)
scanf("%d",&v[i]);
for(i=0;i<N;i++)
for(j=0;j<N;j++)
frecventa[v[i]+v[j]]++;
for(i=0;i<2100000&&suma<K;i++)
{
suma+=frecventa[i];
k++;
u[k].numar=i;
u[k].valoare=suma;
}
int mij,st=0,dr=k-1;
do
{
mij=(st+dr)/2;
if(u[mij].valoare<K)
st=mij+1;
else
if(u[mij].valoare>K)
dr=mij-1;
}while(st<dr);
if(u[st].valoare>K)
printf("%d",u[st].numar);
else
printf("%d",u[st+1].numar);
return 0;
}