Run Time: 0.000
Ranking (as of 2016-08-29): 61 out of 396
Language: C++
/*
UVa 1593 - Alignment of Code
To build using Visual Studio 2012:
cl -EHsc -O2 UVa_1593_Alignment_of_Code.cpp
*/
#include <algorithm>
#include <cstdio>
#include <cstring>
using namespace std;
const int nr_chars_max = 180, nr_lines_max = 1000;
char lines[nr_lines_max][nr_chars_max + 1], buff[nr_chars_max * nr_chars_max];
struct word {
char* p_;
int l_;
} words[nr_lines_max][nr_chars_max + 1];
int max_lengths[nr_chars_max + 1];
int main()
{
int nr_lines = 0;
while (gets(lines[nr_lines])) {
char* p = lines[nr_lines];
while (*p == ' ')
p++;
for (int i = 0; *p; i++) {
words[nr_lines][i].p_ = p;
while (*p && *p != ' ')
p++;
words[nr_lines][i].l_ = p - words[nr_lines][i].p_;
max_lengths[i] = max(max_lengths[i], words[nr_lines][i].l_ + 1);
while (*p == ' ')
p++;
}
nr_lines++;
}
for (int i = 0; i < nr_lines; i++) {
char* p = buff;
for (int j = 0; words[i][j].p_; j++) {
memcpy(p, words[i][j].p_, words[i][j].l_);
p += words[i][j].l_;
if (words[i][j + 1].p_) {
int k = max_lengths[j] - words[i][j].l_;
memset(p, ' ', k);
p += k;
}
}
*p = '\0';
puts(buff);
}
return 0;
}
No comments:
Post a Comment