Cod sursa(job #1761380)

Utilizator nnnmmmcioltan alex nnnmmm Data 22 septembrie 2016 09:30:32
Problema Loto Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.54 kb
#include<cstdio>
#include<map>
#include<algorithm>
const unsigned int NMAX=100;
unsigned int v[NMAX+1];
struct sol{unsigned int x[4];};
std::map<unsigned int,sol> map;
int main()
{
 FILE *file=fopen("loto.in","r");
 unsigned int n,s;
 fscanf(file,"%u %u ",&n,&s);
 for(unsigned int i=1;i<=n;i++)
     fscanf(file,"%u ",&v[i]);
 fclose(file);

 for(unsigned int x1=1;x1<=n;x1++)
     {
      for(unsigned int x2=1;x2<=n;x2++)
          {
           for(unsigned int x3=1;x3<=n;x3++)
               {
                sol a;
                a.x[1]=x1,a.x[2]=x2,a.x[3]=x3;
                map[v[x1]+v[x2]+v[x3]]=a;
               }
          }
     }

 file=fopen("loto.out","w");
 std::vector<unsigned int> rasp;
 for(unsigned int x1=1;x1<=n;x1++)
     {
      for(unsigned int x2=1;x2<=n;x2++)
          {
           for(unsigned int x3=1;x3<=n;x3++)
               {
                if(map.count(s-(v[x1]+v[x2]+v[x3])))
                   {
                    rasp.push_back(x1);
                    rasp.push_back(x2);
                    rasp.push_back(x3);
                    for(unsigned int i=1;i<=3;i++)
                        rasp.push_back(map[s-(v[x1]+v[x2]+v[x3])].x[i]);
                    std::sort(rasp.begin(),rasp.end());
                    for(unsigned int i=0;i<rasp.size();i++)
                        fprintf(file,"%u ",rasp[i]);
                    fclose(file);
                    return 0;
                   }
               }
          }
     }
 fprintf(file,"-1\n");
 fclose(file);
 return 0;
}