Pagini recente » Cod sursa (job #2277684) | Cod sursa (job #1176689) | Cod sursa (job #2183524) | Cod sursa (job #1622725) | Cod sursa (job #316039)
Cod sursa(job #316039)
#include<stdio.h>
#define dim 110
#define dim2 (dim)
int a[dim],b[dim2],n,i,k,p=1;
struct elemente { int e1,e2,e3;} el[dim2];
long long unsigned sum;
void read()
{
scanf("%d%d",&n,&sum);
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
}
void sw(int &i,int &k)
{
int aux=b[i];
b[i]=b[k];
b[k]=aux;
i++;
k--;
}
void sort(int st,int dr)
{
int i=st,j=dr,p=b[(st+dr)/2];
do
{
while(b[i]<p)
i++;
while(p<b[j])
j--;
if(i<=j)
sw(i,j);
}
while(i<=j);
if(st<j)
sort(st,j);
if(i<dr)
sort(i,dr);
return ;
}
void afis(int a[dim*dim*dim],int n)
{
int i;
for(i=1;i<=n;i++)
printf("%d ",a[i]);
}
void gen()
{
int k,j,i;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
for(k=1;k<=n;k++,p++)
{
b[p]=a[i]+a[j]+a[k];
el[p].e1=i;
el[p].e2=j;
el[p].e3=k;
}
sort(1,p-1);
afis(b,p-1);
}
int find2(int st,int dr,int el)
{
if(el+b[(st+dr)/2]==sum)
{
printf("%d",(st+dr)/2);
return (st+dr)/2;
}
if(el+b[(st+dr)/2]>sum)
return find2(st,(st+dr)/2-1,el);
return find2((st+dr)/2+1,dr,el);
}
void find()
{
int poz;
for(i=1;i<=p;i++)
{
poz=find2(1,n,b[i]);
}}
int main ()
{
freopen("loto.in","r",stdin);
freopen("loto.out","w",stdout);
read();
gen();
find();
// afis2(int x1,x2);
return 0;
}