Cod sursa(job #1579621)

Utilizator fluture.godlikeGafton Mihnea Alexandru fluture.godlike Data 24 ianuarie 2016 21:51:18
Problema Floyd-Warshall/Roy-Floyd Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.15 kb
#include <cstdio> 
#include <algorithm>

#define in "rating.in"
#define out "rating.out"
#define MAXX 100007
#define DIM 100007

using namespace std;
int n, m, poz;
char buff[DIM];

struct Int3
{
	int position;
	int value;
	int prevalue;
	bool operator <(const Int3 &aux) const
	{
		if(value == aux.value) return (prevalue > aux.prevalue);
		return (value > aux.value);
	}
} v[MAXX];

inline void goNext()
{
	++poz;
	if(poz == DIM)
	{
		poz = 0;
		fread(buff, 1, DIM, stdin);
	}
	return ;
}
inline void citeste(int &nr)
{
	nr = 0;
	while(buff[poz] < '0' || buff[poz] > '9') goNext();
	while(buff[poz] >= '0' && buff[poz] <= '9')
	{
		nr = nr * 10 + buff[poz] - '0';
		goNext();
	}
	return ;
}

int main()
{
	freopen(in, "r", stdin);
	freopen(out, "w", stdout);
	citeste(n);
	citeste(m);
	int mat[n+23][m+23];
	for(int i = 1; i<= n; ++i)
	{
		for(int j = 1; j<= m; ++j)
		{
			citeste(mat[j][i]);
		}
	}
	for(int i = 1; i<= m; ++i)
	{
		for(int j = 1; j<= n; ++j)
		{
			v[j].position = j;
			v[j].prevalue = v[j].value;
			v[j].value = mat[i][j];
		}
		sort(v+1, v+n+1);
		for(int i = 1; i<= n; ++i)
		{
			printf("%d ", v[i].position);
		}
		printf("\n");
	}
	return 0;
}