Nu aveti permisiuni pentru a descarca fisierul grader_test25.in
Cod sursa(job #1711742)
| Utilizator | Data | 1 iunie 2016 08:07:38 | |
|---|---|---|---|
| Problema | Loto | Scor | 0 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 1.33 kb |
#include <iostream>
#include <stdlib.h>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("loto.in");
ofstream g("loto.out");
#define MAX 1000001
int v[101],v2[MAX],n,s,l;
int cmp(const void *a, const void *b)
{
int *aa=(int*)a, *bb=(int*)b;
int k=*aa, l=*bb;
return (k-l);
}
void afisare(int x)
{
int i,j,k;
for (i=0; i<n; i++)
for (j=0; j<n; j++)
for (k=0; k<n; k++)
if (v[i]+v[j]+v[k]==v2[x])
{
g<<v[i]<<" "<<v[j]<<" "<<v[k];
return;
}
}
int main()
{
int i,j,k;
f>>n>>s;
for (i=0; i<n; i++)
f>>v[i];
l=0;
for (i=0; i<n; i++)
for (j=0; j<n; j++)
for (k=0; k<n; k++)
{
v2[l]=v[i]+v[j]+v[k];
l++;
}
qsort(v2,l,sizeof(int),cmp);
j=l-1;
for (i=0; i<l; i++)
{
while (v2[j]+v2[i]>s && j>0)
j--;
if (j>=0)
{
if (v2[i]+v2[j]==s)
{
afisare(i);
g<<" ";
afisare(j);
g<<endl;
return -1;
}
}
if (j<0)
i=l;
}
g<<-1;
return 0;
}
