自己写了一个spj代码,意思是输出序列与标准答案如果完全相同则AC,一部分相同按部分给分,否则WA,但为什么PC(部分正确)的分数有一些问题,他应该是10分,但是是9分,我试着输出y和z(输出序列元素个数和标准答案的),然后z非常大,像一个随机数,应该哪里出了问题,求调
#include<testlib.h>
#include<bits/stdc++.h>
using namespace std;
int als[100050],bls[100050];
int main(int argc,char*argv[])
{
registerTestlibCmd(argc, argv);
int x,ansx=0,flag=1,cnt=0,y=1,z=1;
string a,b;
a=ouf.readLine();
b=ans.readLine();
for(auto i:a)
{
if(isdigit(i)) als[y]=als[y]*10+(i-48);
else y++;
}
for(auto i:b)
{
if(isdigit(i)) bls[z]=bls[z]*10+(i-48);
else z++;
}
for(int i=1;i<=min(y,z);i++)
{
if(als[i]==bls[i]) ansx++;
else flag=0;
}
if(flag) quitf(_ok, "The answer is correct.");
else if(ansx) quitp((ansx*1.0)/max(y,z),"Partially Correct,y=%d,z=%d",y,z);
else quitf(_wa, "All the answer is wrong.");
}