Pagini recente » Cod sursa (job #306794) | Cod sursa (job #2662889) | Cod sursa (job #744809) | Cod sursa (job #1420101) | Cod sursa (job #1248197)
#include<fstream>
#include<algorithm>
using namespace std;
int a[50005],n,i,st,dr,omg;
long long rs,k;
long long check(int x) {
int i;
long long aux=0;
//dap faci simplu (c) ION :)
for(i=1,omg=n;2*a[i]<=x && i<=n;++i)
{
while(i<omg && a[i]+a[omg]>x) --omg;
aux+=2*(omg-i)+1;
}
return aux;
}
int main()
{
ifstream cin("sume2.in");
ofstream cout("sume2.out");
cin>>n>>k;
for(i=1;i<=n;++i) cin>>a[i];
sort(a+1,a+n+1);
st=2*a[1]; dr=2*a[n];
while(st<=dr)
{
int pivot=(st+dr)/2;
long long gmb=check(pivot);
long long fnc=check(pivot-1);
if(gmb>=k && fnc<k) rs=pivot,st=dr+1;
else if(gmb<k) st=pivot+1;
else dr=pivot-1;
}
cout<<rs<<'\n';
return 0;
}