Pagini recente » Cod sursa (job #2390451) | Cod sursa (job #308168) | Cod sursa (job #1750238) | Cod sursa (job #1020159) | Cod sursa (job #1019935)
#include <iostream>
#include <fstream>
using namespace std;
struct sume
{
int s,b,c;
};
struct sume v[1000000];
void quicksort(sume *v,int f,int n)
{
int p,j,i;
sume aux;
if(f<n)
{
p=f;
i=f;
j=n;
while(i<j)
{
while(v[i].s<=v[p].s &&i<n)
i++;
while(v[j].s > v[p].s)
j--;
if(i<j){
aux=v[i];
v[i]=v[j];
v[j]=aux;
}
}
aux=v[p];
v[p]=v[j];
v[j]=aux;
quicksort(v,f,j-1);
quicksort(v,j+1,n);
}
}
int main()
{int N,S,a[100],i;
ifstream f("loto.in");
ofstream g("loto.out");
f>>N>>S;
for (i=0;i<N;i++)
f>>a[i];
int m=0;
int ok=0;
for (i=0;i<N;i++)
if (ok==0)
for (int j=0;j<N;j++)
if (ok==0)
for (int k=0;k<N;k++)
{if (a[i]+a[j]+a[k]<S)
{
v[m].s=a[i]+a[j]+a[k];
v[m].b=a[i];
v[m].c=a[j];
m++;
}
else if ((2*a[i]+2*a[j]+2*a[k])==S)
{
g<<a[i]<<' '<<a[i]<<' '<<a[j]<<' '<<a[j]<<' '<<a[k]<<' '<<a[k]<<endl;
break;
ok=1;
}}
quicksort(v,0,m-1);
i=0; m--;
while (ok==0 && i!=m)
{
if (v[i].s+v[m].s==S)
{ok=1;
g<<v[i].s-v[i].b-v[i].c<<' '<<v[i].b<<' '<<v[i].c<<' '<<v[m].s-v[m].b-v[m].c<<' '<<v[m].b<<' '<<v[m].c;}
else if (v[i].s+v[m].s>S) m--;
else i++;
}
if (ok==0) g<<-1;
f.close();
g.close();
return 0;
}