Cod sursa(job #2420464)

Utilizator Neamtu93George Neamtu93 Data 12 mai 2019 11:22:31
Problema Loto Scor 5
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.92 kb
#include<iostream>
#include<fstream>
using namespace std;

ifstream fin("loto.in");
ofstream fout("loto.out");

struct st{
	int s;
	int a;
	int b;
	int c;};


int n,a[101],sum,i,j,k,l,str,dr,mij,x;
st s[10001];
int main(){
	fin>>n>>sum;
	for(i=1;i<=n;++i)
		fin>>a[i];
	for(i=1;i<=n;++i)
		for(j=i;j<=n;++j)
			for(k=j;k<=n;++k){
				++l;
				s[l].s=a[i]+a[j]+a[k];
				s[l].a=a[i];
				s[l].b=a[j];
				s[l].c=a[k];
			}
	for(i=1;i<l;++i)
		for(j=i;j<=l;++j){
			if(s[i].s>s[j].s){int aux;aux=s[i].s;s[i].s=s[j].s;s[j].s=aux;}
		}
	for(i=1;i<=l;++i){
		x=sum-s[i].s;
		str=1;
		dr=l;
		while(str<=dr){
			mij=str+dr/2; // sau mij=st+(dr-st)/2
			if(s[mij].s==x){
				fout<<s[mij].a<<" "<<s[mij].b<<" "<<s[mij].c<<" "<<s[i].a<<" "<<s[i].b<<" "<<s[i].c<<" ";
				return 0; //am gasit mij favorabil si termin ;
			}
			if(s[mij].s>x)
				str=mij+1;
			if(s[mij].s<x)
				dr=mij-1;
		}		
	}	
}