Cod sursa(job #769468)

Utilizator lucky1992Ion Ion lucky1992 Data 19 iulie 2012 15:02:39
Problema Loto Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <iostream>
#include <algorithm>
#include <stdio.h>
#include <stdlib.h>
#define MAX 1000001

using namespace std;


typedef struct _sume{
  int a,b,c,suma;
} sume;

int N, S, vec[105];
sume s[MAX];



bool comp( sume s1, sume s2 ){
  if( s1.suma > s2.suma ) return true;
  else return false;
  
}
	  
int main () {
  FILE *f1, *f2;
  f1 = fopen("loto.in", "r" );
  f2 = fopen("loto.out", "w" );
 
  int t = 0;

  
  fscanf(f1,"%d%d", &N, &S );
  for( int i = 0 ; i < N ; i++ )
      fscanf(f1,"%d", &vec[i]);

  for( int i = 0 ; i < N; i++ )
    for( int j = i; j < N; j++ )
	for( int  k = j; k < N; k++ ){
	   s[t].suma = vec[i] + vec[j] + vec[k];
	   s[t].a = vec[i];
	   s[t].b = vec[j];
	   s[t].c = vec[k];
	   t++;
	}
	
    sort( s, s + t, comp);
    int left = 0, right = t - 1;
    while( ( s[left].suma+s[right].suma != S ) && ( left <= right ) ){
      if( s[left].suma + s[right].suma < S ) right--;
      else left++;
    }
  if ( left <= right ) fprintf( f2, "%d %d %d %d %d %d\n",s[left].a,s[left].b,s[left].c,s[right].a,s[right].b,s[right].c); 
  else fprintf(f2,"-1\n"); 
    fclose(f1);
    fclose(f2);
    return 0;
}