Cod sursa(job #1862908)

Utilizator caesar2001Stoica Alexandru caesar2001 Data 30 ianuarie 2017 14:07:35
Problema Divizori Primi Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <cstdio>
#include <algorithm>

FILE *in,*out;

using namespace std;

int v[50001];

int n;

unsigned int nrper(int x)
{
    unsigned int rez = 0,j = n;
    for(unsigned int i = 1;i <= n;i ++)
    {
        while(j >= 1 && v[i] + v[j] > x)
        {
            j --;
        }
        rez += j;
    }
    return rez;
}

int main()
{
    in = fopen("sume2.in","r");
    out = fopen("sume2.out","w");
    unsigned int k;
    fscanf(in,"%d %u",&n,&k);
    for(int i =1;i <= n;i ++)
        fscanf(in,"%d",&v[i]);
    sort(v+1,v+n+1);
    int pas = 1 << 21;
    unsigned int r = 0;
    while(pas)
    {
        if(nrper(r+pas) <= k-1)
            r += pas;
        pas /= 2;
    }
    fprintf(out,"%u",r + 1);

    return 0;
}