Pagini recente » Istoria paginii runda/happy-birthday-infoarena-2014/clasament | Cod sursa (job #900017) | Cod sursa (job #1086902) | Cod sursa (job #2521496) | Cod sursa (job #1743699)
#include <fstream>
#include <iostream>
struct comb{
int nr[3],s;
};
using namespace std;
comb a[161700];
int v[100],n,s,sum,k,ax[10],viz[161700],n_viz;
ifstream f("loto.in");
ofstream g("loto.out");
bool print;
void scan(){
f>>n>>s;
for(int i=0;i<n;i++)
{
f>>v[i];
}
f.close();
}
void sort(){
for(int i=0;i<k-1;i++){
for(int j=i+1;j<k;j++){
if(a[i].s>a[j].s){
comb aux=a[i];
a[i]=a[j];
a[j]=aux;
}
}
}
}
void afisare(int k){
cout<<a[k].nr[0]<<" "<<a[k].nr[1]<<" "<<a[k].nr[2]<<" "<<a[k].s<<endl;
}
bool cauta(int x){
for(int i=0;i<n_viz;i++){
if(viz[i]==x)return true;
}
return false;
}
void add(){
if(!cauta(ax[0]+ax[1]+ax[2])){
viz[++n_viz]=ax[0]+ax[1]+ax[2];
a[k].nr[0]=ax[0];
a[k].nr[1]=ax[1];
a[k].nr[2]=ax[2];
a[k].s=a[k].nr[0]+a[k].nr[1]+a[k].nr[2];
k++;
}
}
int search(int ci,int cf,int x){
if(ci<=cf){
int m=(ci+cf)/2;
if(a[m].s==x)return m;
if(a[m].s>x)return search(ci,m-1,x);
return search(m+1,cf,x);
}
return -1;
}
void bk(int j){
if(j<3)
for(int i=0;i<n;i++){
ax[j]=v[i];
if(j==2)add();
bk(j+1);
}
}
int main()
{
scan();
bk(0);
sort();
for(int i=0;i<k;i++)afisare(i);
int i;
for(i=0;i<k;i++){
int aux=search(i,k-1,s-a[i].s);
if(aux!=-1){
g<<a[i].nr[0]<<" "<<a[i].nr[1]<<" "<<a[i].nr[2]<<" "<<a[aux].nr[0]<<" "<<a[aux].nr[1]<<" "<<a[aux].nr[2]<<" ";
break;
}
}
if(i==k)g<<-1;
return 0;
}