求助,本地结果正确,但是提交到洛谷上全部RE了,不知道是什么原因
#include<bits/stdc++.h>
using namespace std;
int p1, p2, p3;
char w[110];
char zhan[20000];
int lw, lzhan;
char c;
bool IsUpperLetter(char q) {
return (q >= 'A' && q <= 'Z');
}
bool IsLowerLetter(char q) {
return (q >= 'a' && q <= 'z');
}
bool IsLetter(char q) {
return (IsUpperLetter(q) || IsLowerLetter(q));
}
bool IsShuzi(char q) {
return (q >= '0' && q <= '9');
}
void TianChong(char x, char y) {
if (p1 == 1 && p3 == 1) {
if (IsLowerLetter(x) && IsLowerLetter(y)) {
for (char t = x + 1; t < y; t++) {
for (int i = 0; i < p2; i++) {
zhan[lzhan++] = t;
}
}
}
if (IsShuzi(x) && IsShuzi(y)) {
for (char t = x + 1; t < y; t++) {
for (int i = 0; i < p2; i++) {
zhan[lzhan++] = t;
}
}
}
}
else if (p1 == 1 && p3 == 2) {
if (IsLowerLetter(x) && IsLowerLetter(y)) {
for (char t = y-1; t >x; t--) {
for (int i = 0; i < p2; i++) {
zhan[lzhan++] = t;
}
}
}
if (IsShuzi(x) && IsShuzi(y)) {
for (char t = y-1; t >x; t--) {
for (int i = 0; i < p2; i++) {
zhan[lzhan++] = t;
}
}
}
}
else if (p1 == 2 && p3 == 1) {
if (IsLowerLetter(x) && IsLowerLetter(y)) {
for (char t = x + 1; t < y; t++) {
char tmp = toupper(t);
for (int i = 0; i < p2; i++) {
zhan[lzhan++] = tmp;
}
}
}
if (IsShuzi(x) && IsShuzi(y)) {
for (char t = x + 1; t < y; t++) {
for (int i = 0; i < p2; i++) {
zhan[lzhan++] = t;
}
}
}
}
else if (p1 == 2 && p3 == 2) {
if (IsLowerLetter(x) && IsLowerLetter(y)) {
for (char t = y-1; t >x; t--) {
char tmp = toupper(t);
for (int i = 0; i < p2; i++) {
zhan[lzhan++] = tmp;
}
}
}
if (IsShuzi(x) && IsShuzi(y)) {
for (char t = y-1; t >x; t--) {
for (int i = 0; i < p2; i++) {
zhan[lzhan++] = t;
}
}
}
}
else if (p1 == 3) {
for (char t = x + 1; t < y; t++) {
for (int i = 0; i < p2; i++) {
zhan[lzhan++] = '*';
}
}
}
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin >> p1 >> p2 >> p3;
c = getchar();
while (c == '\n' || c == '\r') c = getchar();
while (c != '\n' && c != '\r') {
w[lw++] = c;
c = getchar();
}
for (int i = 0; i < lw; i++) {
if (w[i] != '-') {
zhan[lzhan++] = w[i];
}
if (w[i] == '-') {
if (w[i + 1] <= w[i - 1]) {
zhan[lzhan++] = w[i];
continue;
}
if (w[i + 1] == w[i - 1] + 1) {
continue;
}
if (w[i + 1] > w[i - 1] && IsLowerLetter(w[i - 1]) && IsLowerLetter(w[i + 1])) {
TianChong(w[i - 1], w[i + 1]);
}
if (w[i + 1] > w[i - 1] && IsShuzi(w[i - 1]) && IsShuzi(w[i + 1])) {
TianChong(w[i - 1], w[i + 1]);
}
}
}
for (int i = 0; i < lzhan; i++) {
cout << (char)zhan[i];
}
return 0;
}