https://www.patest.cn/contests/gplt/L2-019
#include<cstring> #include<cstdio> #include<algorithm> int cmp1(const void *a,const void *b) { char *s1=(char*)a; char *s2=(char*)b; return strcmp(s1,s2); } int n,m,i,j; char s[500010];// 开始的时候数组开小了,错了一个用例 char res[5001][20]; char cz[10010][20]; int a[10010]; double ave; int ans; //被该用户点赞次数大于其点赞平均数、且不在其关注列表上的人 int main() { //freopen("C:\\Users\\Administrator\\Desktop\\in.txt","r",stdin); 记得注释掉 scanf("%d",&n); gets(s);//注意这里的处理,根据题目输入特点 scanf("%d",&m); double sum=0;//和 for( i=0;i<m;i++) { scanf("%s %d",&cz[i],&a[i]); sum+=a[i]; } ave = sum/m;//平均数 //printf("%.2f",ave); ans=0; for( i=0;i<m;i++) { if(a[i]<ave)//小于平均数的直接不予考虑 continue; if(strstr(s,cz[i])==NULL)//strstr(a,b)判断b是不是a的子串,不是的话会返回NULL { strcpy(res[ans++],cz[i]);//得到结果,拷贝到result数组 } } qsort(res,ans,sizeof(char)*20,cmp1);//字符串排序 参考 for( i=0;i<ans;i++) { printf("%s\n",res[i]); } if(ans==0)//不要忘记处理无的情况 printf("Bing Mei You\n"); return 0; }