Cod sursa(job #645167)

Utilizator an_drey_curentandreycurent an_drey_curent Data 8 decembrie 2011 19:16:03
Problema Divizori Primi Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#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;
}