Cod sursa(job #1763304)

Utilizator BarbumateiBarbu Matei Barbumatei Data 24 septembrie 2016 13:02:16
Problema Loto Scor 0
Compilator c Status done
Runda Arhiva de probleme Marime 1.59 kb
#include <stdio.h>
#include <stdlib.h>
int nr[1000], won[6];
int main(){
  int n, i, j, min, max, pmin, pmax, difmax, dif, numar, pozitie;
  FILE *fin, *fout;
  fin=fopen("loto.in", "r");
  fout=fopen("loto.out", "w");
  fscanf(fin, "%d", &n);
  for(i=0; i<n; i++)
    fscanf(fin, "%d", &nr[i]);
  for(i=0; i<6; i++)
    fscanf(fin, "%d", &won[i]);
  for(i=0; i<n; i++)
    for(j=0; j<6; j++)
      if(nr[i]==won[j]) nr[i]=0;
  min=won[0]; max=won[0]; pmin=0; pmax=0;
  for(i=1; i<6; i++){
    if(won[i]<min){
      min=won[i];
      pmin=i;
    }
    if(won[i]>max){
      max=won[i];
      pmax=i;
    }
  }
  difmax=999999;
  for(i=0; i<n; i++){
    if(nr[i]<min) dif=min-nr[i];
    else if(nr[i]>min) dif=nr[i]-min;
    if(dif==difmax){
      if(nr[i]>numar)
        numar=nr[i];
        pozitie=i;
    }
    else if(dif<difmax && nr[i]!=0){
      difmax=dif;
      numar=nr[i];
      pozitie=i;
    }
  }
  won[pmin]=numar;
  nr[pozitie]=0;///AM DETERMINAT CEL MAI APROAPE NR DE MIN
  difmax=999999;
  for(i=0; i<n; i++){
    if(nr[i]<max) dif=max-nr[i];
    else if(nr[i]>max) dif=nr[i]-max;
    if(dif==difmax){
      if(nr[i]>numar)
        numar=nr[i];
    }
    else if(dif<difmax && nr[i]!=0){
      difmax=dif;
      numar=nr[i];
    }
  }
  won[pmax]=numar;///AM DETERMINAT CEL MAI APROAPE NR DE MAX
  for(i=0; i<5; i++)
    for(j=i+1; j<6; j++)
      if(won[i]>won[j]){
        max=won[i];
        won[i]=won[j];
        won[j]=max;
      }
  for(i=0; i<6; i++)
    fprintf(fout, "%d ", won[i]);
  fclose(fin);
  fclose(fout);
    return 0;
}