求大佬们帮忙debug这份代码,谢谢
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <algorithm>
using namespace std;
inline int read(){ //快读
int x = 0;
bool f = false;
char ch = getchar();
while(ch < '0' || ch > '9'){
if(ch == '-'){
f = true;
ch = getchar();
}
}
while(ch >= '0' && ch <= '9'){
x = x * 10 + ch - '0';
ch = getchar();
}
if( f ) return -x;
else return x;
}
string s;
int main(){
//tsum,ssum分别为教师座位数和学生座位数;a,b分别表示学生和教师数量
int a, b, tsum = 0, ssum = 0, ans = 0;
a = read(), b = read();
cin >> s;
for(int i = 0; i < s.size(); i++){ //统计各个座位的数量
if(s[i] == 'T') tsum++;
else ssum++;
}
//如果总人数大于总座位数(s.size()-1是因为要去掉后面的空字符),那么无解
if( (a + b) > (s.size() - 1)){
printf("-1");
return 0;
}
if(ssum >= a && tsum >= b){
//对应座位数均大于对应人数,不用改
printf("0");
return 0;
}else if(a > ssum && tsum >= b){
//如果有一方人数大于对应座位数,以多出的座位数作为答案,因为排除掉了总人数大于座位数的情况,下方同理
ans = a - ssum;
printf("%d", ans);
}else{
ans = b - tsum;
printf("%d", ans);
}
return 0;
}
WA: #2 ~ #8(a+b=n的情况时错了)
测试结果