忙着考试,很久没做UVa。现在放假了,放假该好好刷题了。
#include<cstdio>
#include<cstring>
#include<algorithm>
#define MAXN 20480
using namespace std;
int cnt_p = 0, cnt_n = 0, max_part = 0;
int part_n[MAXN], max_len[MAXN];
char t[MAXN], part[MAXN][MAXN];
int part_num(int k) {
int sum = 0;
for(int i = 0; i < k; i++)
sum += part_n[i];
return sum;
}
void search_max_len() {
int n = 0;
for(int i = 0; i < cnt_n; i++) {
for(int j = 0; j < part_n[i]; j++) {
int k = part_num(i);
int len = strlen(part[k + j]);
max_len[j] = max(max_len[j], len + 1);
}
}
return ;
}
void get_mes() {
while(gets(t) != NULL) {
int cnt_c = 0;
for(int i = 0; i < strlen(t); i++) {
if(t[i] != ' ')
part[cnt_p][cnt_c++] = t[i];
else if(strlen(part[cnt_p])) {
cnt_p++;
cnt_c = 0;
part_n[cnt_n]++;
}
}
if(t[strlen(t) - 1] != ' ') {
part_n[cnt_n]++;
cnt_p++;
}
max_part = max(part_n[cnt_n], max_part);
cnt_n++;
memset(t, 0, sizeof(t));
}
search_max_len();
return ;
}
void put_part() {
for(int i = 0; i < cnt_n; i++) {
for(int j = 0; j < part_n[i]; j++) {
int k = part_num(i);
printf("%s", part[k + j]);
if(j != part_n[i] - 1)
for(int p = 0; p < max_len[j] - strlen(part[k + j]); p++)
printf(" ");
}
printf("\n");
}
return ;
}
int main() {
get_mes();
put_part();
return 0;
}
浙公网安备 33010602011771号