Cod sursa(job #172125)

Utilizator Andreid91Ciocan Andrei Andreid91 Data 5 aprilie 2008 19:38:47
Problema Loto Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 kb
#include<fstream.h>

struct vector {
	      long v1;
	      int v2,v3,v4;
	      };

int poz (vector v[338360],long p, long u)
	{
	long piv=v[p].v1;
	vector aux;
	while (p<u)
		{
		if (v[p].v1>v[u].v1) {
			       aux=v[p];
			       v[p]=v[u];
			       v[u]=aux;
			       }
		if (piv==v[p].v1) u--;
			else p++;
		}
	return p;
	}


void quick (vector v[338360],long p,long u)
	{
	long k;
	if (p<u) {
		 k=poz(v,p,u);
		 quick (v,p,k);
		 quick (v,k+1,u);
		 }
	}


int main()
{
int n,i,j,k,l;
long s=0,q=0,u,p=0,v[101];
vector a[338360];
ifstream f("loto.in");
ofstream g("loto.out");
f>>n>>s;
for (i=1;i<=n;i++)
	f>>v[i];
for (i=1;i<=n;i++)
	for (j=i;j<=n;j++)
		for (k=j;k<=n;k++)
			{
			a[++q].v1=v[i]+v[k]+v[j];
			a[q].v2=i;a[q].v3=j;a[q].v4=k;
			}
quick (a,1,q);
p=1;u=q;    int sw=1;
while (p<=u && sw)
	if (a[p].v1+a[u].v1>s) u--;
		else if (a[p].v1+a[u].v1 <s) p++;
			else {
			     sw=0;
			     g<<a[p].v2<<' '<<a[p].v3<<' '<<a[p].v4<<' '<<a[u].v2<<' '<<a[u].v3<<' '<<a[u].v4;
			     }
if (sw) g<<-1;
g.close();
f.close();
return 0;
}