Teste di serie

Un torneo è composto da K gironi, con N squadre partecipanti in ciascun girone (per un totale di KxN squadre nel torneo).
Dopo le eliminatorie, passa soltanto la prima classificata di ogni girone.
A ogni squadra è associato un coefficiente di bravura, ovvero un intero positivo che è tanto maggiore quanto più la squadra è forte.
Per rendere più vivace il torneo, gli organizzatori vogliono far gareggiare le squadre più forti tra loro soltanto dopo le eliminatorie: in altre parole, le K squadre con i coefficienti di bravura più alti devono giocare in gironi distinti.

Aiutate gli organizzatori a verificare che la composizione del torneo rispetti il loro volere: prese le K squadre con il più alto coefficiente di bravura, ciascun girone deve contenere esattamente una di esse (da notare che due o più squadre possono avere lo stesso coefficiente).

Dati di input

Il file input.txt è composto da K+1 righe.

  • La prima riga contiene due interi positivi separati da uno spazio: il numero K di gironi e il numero N di squadre per girone.
  • Le successive K righe contengono i coefficienti di bravura delle squadre: la j-esima di tale righe contiene N interi positivi separati da uno spazio che sono i coefficienti di bravura delle N squadre nel j-esimo girone, per 1 ≤ j ≤ K.

Dati di output

Il file output.txt è composto di una riga contenente un solo intero:

  • 1 se il torneo rispetta i vincoli imposti dagli organizzatori,
  • 0 altrimenti.

Assunzioni

  • 1 < N ≤ 100
  • 1 < K ≤ 100

Esempi di input/output

input.txt output.txt
3 4
3 5 7 9
3 6 78 90
43 78 71 32
0
3 4
2 2 2 1
2 1 3 1
2 4 2 1
1

#include
#include
#include      // sort()
using namespace std;

#define KMAX 100
#define NMAX 100

int bravura[KMAX][NMAX];

int main()
{
	int K, N;
	
	ifstream fin ( "input.txt");
	ofstream fout("output.txt");
	
	fin >> K >> N;
	
	for(int i=0; i < K; i++)
	for(int j=0; j < N; j++)
	    fin >> bravura[i][j];

	for(int i=0; i < K; i++)
	    sort(bravura[i],bravura[i]+N);
                                   
    int meno_brava=bravura[0][N-1];       // la meno brava tra le prime
	for(int i=1; i < K; i++)
	    if(bravura[i][N-1] < meno_brava)
	        meno_brava=bravura[i][N-1];	
	        
	int risposta=1;	                      // se una seconda è più brava...
	for(int i=0; i < K; i++)
	    if(bravura[i][N-2] > meno_brava)
	    {
	    	risposta=0;
	    	break;
		}	
		
	fout << risposta;
	return 0;
}