#include<stdio.h>
#include<stdlib.h>
#include<string.h>

struct DataLineStruct
{
  int mFileNo;
  float mWhichScore;
  float mTar3Score;
  float mDiff;
  int mNoWhich;
  int mNoTar3;
  int mWhichSize;
  int mTar3Size;
};
typedef struct DataLineStruct DataLine;

int main( int argc, char *argv[] )
{
  DataLine lines[10];
  FILE *dataFile = fopen( argv[1], "r" );
  int curLine = 0, cnt = 0;

  if ( dataFile == NULL )
  {
    printf( "File \"%s\" not found.\n", argv[1] );
    exit( 0 );
  }

  for ( curLine = 0; !feof( dataFile ); curLine++ )
  {
    fscanf( dataFile, "%d %f %f %f %d %d %d %d", &(lines[curLine].mFileNo), &(lines[curLine].mWhichScore), 
	    &(lines[curLine].mTar3Score), &(lines[curLine].mDiff), &(lines[curLine].mNoWhich), &(lines[curLine].mNoTar3),
	    &(lines[curLine].mWhichSize), &(lines[curLine].mTar3Size) );
    cnt++;
  }
  
  int i, j;
  for ( i = 0; i < 9; i++ )
    for ( j = i + 1; j < 10; j++ )
      if ( lines[j].mDiff > lines[i].mDiff )
      {
	DataLine temp = lines[i];
	lines[i] = lines[j];
	lines[j] = temp;
      }

  fclose( dataFile );
  dataFile = fopen( argv[1], "w" );
  for ( curLine = 0; curLine < cnt-1; curLine++ )
  {
    fprintf( dataFile, "%d %f %f %f %d %d %d %d\n", curLine+1, lines[curLine].mWhichScore, lines[curLine].mTar3Score, 
	     lines[curLine].mDiff, lines[curLine].mNoWhich, lines[curLine].mNoTar3, lines[curLine].mWhichSize, lines[curLine].mTar3Size );
  }
  fclose( dataFile );

  return 0;
}
