Cod sursa(job #1018958)

Utilizator tavi.belu1994FMI Belu Andrei Octavian tavi.belu1994 Data 30 octombrie 2013 10:48:22
Problema Loto Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.84 kb
#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstdlib>

#define NMax 101
#define NSum 1000000+1

void quickSort(int arr[101][3], long left, long right){

      long i = left, j = right;
      long tmp;
      long pivot = arr[left + rand() % ( right - left + 1 )][0];
      while (i <= j)
      {
            while (arr[i][0] < pivot)
                  i++;
            while (arr[j][0] > pivot)
                  j--;
            if (i <= j)
            {
                  tmp = arr[i][0];
                  arr[i][0] = arr[j][0];
                  arr[j][0] = tmp;
                  tmp = arr[i][1];
                  arr[i][1] = arr[j][1];
                  arr[j][1] = tmp;
                  tmp = arr[i][2];
                  arr[i][2] = arr[j][2];
                  arr[j][2] = tmp;
                  i++;
                  j--;
            }
      }
      if (left < j)
            quickSort(arr, left, j);
      if (i < right)
            quickSort(arr, i, right);
}

using namespace std;
FILE *f,*g;

int main(){
f=fopen("loto.in","r");
g=fopen("loto.out","w");
int n,s,v[NMax],i,j,k1,k2,k3,k4,k5,sum1[1000][3],sum2[1000][3],sum3[1000][3],sum4[1000][3],sum5[1000][3];
fscanf(f, "%d %d", &n, &s);
k1=k2=k3=k4=k5=0;
for(i=0;i<n;i++)
{
    fscanf(f, "%d", &v[i]);
}
for(i=0;i<n;i++)
{
    for(j=i;j<n;j++)
    {
        sum1[k1][0]=v[i]+v[j];
        sum1[k1][1]=v[i];
        sum1[k1][2]=v[j];
        k1++;
    }
}

for(i=0;i<k1;i++)
{
    for(j=0;j<n;j++)
    {
        sum2[k2][0]=sum1[i][0]+v[j];
        sum2[k2][1]=v[j];
        sum2[k2][2]=i;
        k2++;
    }
}

for(i=0;i<k2;i++)
{
    for(j=0;j<n;j++)
    {
        sum3[k3][0]=sum2[i][0]+v[j];
        sum3[k3][1]=v[j];
        sum3[k3][2]=i;
        k3++;
    }
}

for(i=0;i<k3;i++)
{
    for(j=0;j<n;j++)
    {
        sum4[k4][0]=sum3[i][0]+v[j];
        sum4[k4][1]=v[j];
        sum4[k4][2]=i;
        k4++;
    }
}

for(i=0;i<k4;i++)
{
    for(j=0;j<n;j++)
    {
        sum5[k5][0]=sum4[i][0]+v[j];
        sum5[k5][1]=v[j];
        sum5[k5][2]=i;
        k5++;
    }
}
k5--;
//quickSort(sum5,0,k5);
for(i=0;i<=k5;i++)
{
    if(sum5[i][0]==s)
    {
        fprintf(g,"%d %d %d %d %d %d", sum5[i][1], sum4[sum5[i][2]][1], sum3[sum4[sum5[i][2]][2]][1], sum2[sum3[sum4[sum5[i][2]][2]][2]][1], sum1[sum2[sum3[sum4[sum5[i][2]][2]][2]][2]][1], sum1[sum2[sum3[sum4[sum5[i][2]][2]][2]][2]][2]);
        break;
    }
    else
    {
        if(sum5[i][0]>s)
        {
            fprintf(g,"-1");
            break;
        }
    }
}
//i=300;
//fprintf(g,"%d %d %d %d %d %d", sum5[i][1], sum4[sum5[i][2]][1], sum3[sum4[sum5[i][2]][2]][1], sum2[sum3[sum4[sum5[i][2]][2]][2]][1], sum1[sum2[sum3[sum4[sum5[i][2]][2]][2]][2]][1], sum1[sum2[sum3[sum4[sum5[i][2]][2]][2]][2]][2]);
return 0;

}