Cod sursa(job #751151)

Utilizator svladScurtu Vlad svlad Data 24 mai 2012 17:45:51
Problema Loto Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.24 kb
#include <fstream>
#include <algorithm>
using namespace std;
typedef struct pere {int s,x,y,z;};
pere d[1000001];
int n,x,v[101];
inline int cmp(pere x, pere y)
{
    return x.s<y.s;
}

int main()
{
    int i,j,q,x,k,t,OK=0;
	long long S;
    ifstream f("loto.in");
	ofstream g("loto.out");
    f>>n; f>>S; k=0;
    for (i=1;i<=n;++i)
        f>>v[i];
	if(n<=10)
	{ for(i=1;i<=n&&OK==0;i++)
	{	for(j=1;j<=n&&OK==0;j++)
		 { for(q=1;q<=n&&OK==0;q++)
			 { for(x=1;x<=n&&OK==0;x++)
				 { for(k=1;k<=n&&OK==0;k++)
					 { for(t=1;t<=n&&OK==0;t++)
						 { if(v[i]+v[j]+v[q]+v[x]+v[k]+v[t]==S) {g<<v[i]<<" "<<v[j]<<" "<<v[q]<<" "<<v[x]<<" "<<v[k]<<" "<<v[t]; OK=1;}
						 }
					 }
				 }
			 }
		 }
	}
	if(OK==0) g<<-1;
	}
	else
	{
    for (i=1;i<=n;i++)
        for (j=i;j<=n;j++)
            for (q=j;q<=n;q++)
            {
                d[++k].s=v[i]+v[j]+v[q];
                d[k].x=v[i];
                d[k].y=v[j];
				d[k].z=v[q];
            }
    sort(d,d+k,cmp);
    i=0; j=k-1;
    while((i<j)&&(d[i].s+d[j].s!=S))
        if (d[i].s+d[j].s>S) j--;
        else i++;
    if (d[i].s+d[j].s!=S) g<<-1;
    else g<<d[i].y<<" "<<d[i].x<<" "<<d[i].z<<" "<<d[j].y<<" "<<d[j].x<<" "<<d[j].z;
	}
    return 0;
}