关于我玄学RE
查看原帖
关于我玄学RE
339299
osfly楼主2022/1/22 23:13
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
struct people
{
    char name[100],sos[500];
    int cnt;
    int id;
}p[1000];
int n;
bool cmp(people a,people b)
{
    if(a.cnt==b.cnt) return a.id<b.id;
    return a.cnt>b.cnt;
}
int main()
{
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        scanf(" %s %s",p[i].name,p[i].sos);
        p[i].id=i;
        for(int j=0;j<strlen(p[i].sos)-2;j++)
            if(p[i].sos[j]=='s'&&p[i].sos[j+1]=='o'&&p[i].sos[j+2]=='s')
                p[i].cnt++;
    }
    sort(p+1,p+1+n,cmp);
    for(int i=1;p[i].cnt==p[1].cnt&&i<=n;i++) printf("%s ",p[i].name);
    printf("\n%d",p[1].cnt);
    return 0;
}

这样会RE掉最后面3个点

但是只要把

for(int j=0;j<strlen(p[i].sos)-2;j++)
            if(p[i].sos[j]=='s'&&p[i].sos[j+1]=='o'&&p[i].sos[j+2]=='s')
                p[i].cnt++;

换成

for(int j=strlen(p[i].sos)-1;j>=2;j--)
            if(p[i].sos[j]=='s'&&p[i].sos[j-1]=='o'&&p[i].sos[j-2]=='s')
                p[i].cnt++;

则会AC

为什么换成正序会RE?

蒟蒻不才,还请各位大佬帮助

2022/1/22 23:13
加载中...