📄 4176622_ac_1532ms_7824k.java
字号:
import java.util.*;
public class Main {
private Scanner in;
private int m, n, k;
private Column[] column;
private Record[] record;
public static void main(String[] args) {
new Main().run();
}
class Column {
String name;
String type;
public Column() {
name = in.next();
type = in.next();
}
}
class Record {
String[] item;
public Record() {
item = new String[m];
for (int i = 0; i < m; i++) {
item[i] = in.next();
}
}
public boolean equalsItem(int id, String str) {
if (column[id].type.equals("STR")) {
return str.substring(1, str.length() - 1).equals(item[id]);
}
return Integer.parseInt(str) == Integer.parseInt(item[id]);
}
public boolean biggerItem(int id, String str) {
return Integer.parseInt(item[id]) > Integer.parseInt(str);
}
public boolean smallerItem(int id, String str) {
return Integer.parseInt(item[id]) < Integer.parseInt(str);
}
}
private void run() {
in = new Scanner(System.in);
m = in.nextInt();
n = in.nextInt();
k = in.nextInt();
column = new Column[m];
for (int i = 0; i < m; i++) {
column[i] = new Column();
}
record = new Record[n];
for (int i = 0; i < n; i++) {
record[i] = new Record();
}
for (int i = 0; i < k; i++) {
in.next();
String col = in.next();
in.next();
String condition = in.next();
int index;
index = condition.indexOf("=");
ArrayList <Integer> al = new ArrayList <Integer>();
if (index != -1) {
int id = -1;
for (int j = 0; j < m; j++) {
if (column[j].name.equals(condition.substring(0, index))) {
id = j;
break;
}
}
for (int j = 0; j < n; j++) {
if (record[j].equalsItem(id, condition.substring(index + 1))) {
al.add(j);
}
}
}
index = condition.indexOf(">");
if (index != -1) {
int id = -1;
for (int j = 0; j < m; j++) {
if (column[j].name.equals(condition.substring(0, index))) {
id = j;
break;
}
}
for (int j = 0; j < n; j++) {
if (record[j].biggerItem(id, condition.substring(index + 1))) {
al.add(j);
}
}
}
index = condition.indexOf("<");
if (index != -1) {
int id = -1;
for (int j = 0; j < m; j++) {
if (column[j].name.equals(condition.substring(0, index))) {
id = j;
break;
}
}
for (int j = 0; j < n; j++) {
if (record[j].smallerItem(id, condition.substring(index + 1))) {
al.add(j);
}
}
}
output(al, col);
}
}
private void output(ArrayList <Integer> al, String col) {
String[] col_str = col.split(",");
int tot = 0;
int[] len = new int[col_str.length];
int[] ID = new int[col_str.length];
for (int i = 0; i < col_str.length; i++) {
int id = -1;
for (int j = 0; j < m; j++) {
if (column[j].name.equals(col_str[i])) {
id = j;
break;
}
}
ID[i] = id;
int max = col_str[i].length();
for (int j = 0; j < al.size(); j++) {
if (record[j].item[id].length() > max) {
max = record[j].item[id].length();
}
}
tot += (len[i] = max);
}
out("+");
for (int i = 0; i < col_str.length; i++) {
out("--");
}
for (int i = 1; i < col_str.length; i++) {
out("-");
}
for (int i = 0; i < tot; i++) {
out("-");
}
out("+\n");
for (int i = 0; i < col_str.length; i++) {
out("| ");
for (int j = 0; j <= len[i] - column[ID[i]].name.length(); j++) {
if (j == (len[i] - column[ID[i]].name.length()) / 2) {
out(column[ID[i]].name);
} else {
out(" ");
}
}
out(" ");
}
out("|\n");
out("|");
for (int i = 0; i < col_str.length; i++) {
for (int j = 0; j < len[i] + 2; j++) {
out("-");
}
out("|");
}
out("\n");
for (int i = 0; i < al.size(); i++) {
for (int j = 0; j < col_str.length; j++) {
out("| ");
for (int k = 0; k <= len[j] - record[al.get(i)].item[ID[j]].length(); k++) {
if (k == (len[j] - record[al.get(i)].item[ID[j]].length()) / 2) {
out(record[al.get(i)].item[ID[j]]);
} else {
out(" ");
}
}
out(" ");
}
out("|\n");
}
out("+");
for (int i = 0; i < col_str.length; i++) {
out("--");
}
for (int i = 0; i < tot; i++) {
out("-");
}
for (int i = 1; i < col_str.length; i++) {
out("-");
}
out("+\n\n");
}
private void out(String str) {
System.out.print(str);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -