#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?
蒟蒻不才,还请各位大佬帮助