Ranking (as of 2013-10-22): 619 out of 722
Language: C++
/*
UVa 10895 - Matrix Transpose
To build using Visual Studio 2012:
cl -EHsc -O2 UVa_10895_Matrix_Transpose.cpp
*/
#include <cstdio>
#include <algorithm>
using namespace std;
const int nr_non_zero_elements_max = 1000;
struct element {
int row_;
int column_;
int value_;
bool operator<(const element& e) const {
if (row_ < e.row_)
return true;
else if (row_ > e.row_)
return false;
else
return column_ < e.column_;
}
} elements[nr_non_zero_elements_max];
int main()
{
int m, n;
while (scanf("%d %d", &m, &n) != EOF) {
int r, c, nr_elements = 0;
for (r = 1; r <= m; r++) {
int nc;
scanf("%d", &nc);
for (c = 0; c < nc; c++) {
elements[nr_elements + c].column_ = r;
scanf("%d", &elements[nr_elements + c].row_);
}
for (c = 0; c < nc; c++)
scanf("%d", &elements[nr_elements + c].value_);
nr_elements += c;
}
sort(elements, elements + nr_elements);
printf("%d %d\n", n, m);
int cs = 0, ce = 0;
for (r = 1; r <= n; r++) {
for ( ; elements[ce].row_ == r; ce++)
;
int nc = ce - cs;
printf("%d", nc);
for (c = 0; c < nc; c++)
printf(" %d", elements[cs + c].column_);
putchar('\n');
for (c = 0; c < nc; c++) {
if (c)
putchar(' ');
printf("%d", elements[cs + c].value_);
}
putchar('\n');
cs = ce;
}
}
return 0;
}
No comments:
Post a Comment