我这段代码全程字符串,为什么还会爆 UnAC 100?
#include <bits/stdc++.h>
using namespace std;
bool isvalid(string n){
if(n=="-")return false;
if(n=="0")return true;
if(n[0]=='-')n = n.substr(1,n.size()-1);
if(n[0]=='0')return false;
return true;
}
//-1:a>b 0:a=b 1:a<b
int compare(string a,string b){
if(a[0]=='-'){
if(b[0]=='-'){
a = a.substr(1,a.size()-1);
b = b.substr(1,b.size()-1);
if(a.size() < b.size())return -1;
else if(a.size() > b.size())return 1;
else{
for(int i = 0;i < a.size();++i){
if(a[i] < b[i])return -1;
else if(a[i] > b[i])return 1;
}
}
return 0;
}else return 1;//a负b非负
}else{
if(b[0]=='-')return -1;//a非负b负
else{
if(a.size() < b.size())return 1;
else if(a.size() > b.size())return -1;
else{
for(int i = 0;i < a.size();++i){
if(a[i] < b[i])return 1;
else if(a[i] > b[i])return -1;
}
}
return 0;
}
}
}
int main(){
string l,r,n;
int t;
cin >> l >> r >> t;
while(t--){
cin >> n;
if(isvalid(n)){
if(compare(l,n)>0 && compare(n,r)>0)cout << "0\n";
else cout << "2\n";
}else cout << "1\n";
}
return 0;
}