求助大佬
查看原帖
求助大佬
315398
小杨小小杨楼主2021/7/9 22:26

WA第4个点,求助。

#include<bits/stdc++.h>
using namespace std;
string myname,doit,name1,name2;
int i,top,tot,k,kk,m,n,j,mm;
struct Node{
	string names;
	int x;
}f[10001],h[10001];
bool cmp(Node x,Node y){return x.names<y.names;}
bool cmp1(Node x,Node y){return x.x>y.x||x.x==y.x&&x.names<y.names;}
int main(){
	cin>>myname;
	scanf("%d",&mm);getchar();
	for (i=1;i<=mm;i++){
		getline(cin,doit);n=doit.length();
		name1="";
		for (j=0;j<=n;j++)
			if (doit[j]==' ') break;
			else name1+=doit[j];
		j++;k=j;
		for (j=j;j<=n;j++) 
			if (doit[j]==' ') break;
		kk=j-1;m=kk-k+1;
		if (doit.substr(k,m)=="posted"){
			name2="";
			for (j=kk+2;j<=n;j++)
				if (doit[j]==' ') break;
			for (j=j+1;j<=n;j++)
				if (doit[j]=='\'') break;
				else name2+=doit[j];
			f[++top].names=name1;f[top].x=15;
			f[++top].names=name2;f[top].x=15;
		}
		else if (doit.substr(k,m)=="commented"){
			name2="";
			for (j=kk+2;j<=n;j++)
				if (doit[j]==' ') break;
			for (j=j+1;j<=n;j++)
				if (doit[j]=='\'') break;
				else name2+=doit[j];
			f[++top].names=name1;f[top].x=10;
			f[++top].names=name2;f[top].x=10;
		}
		else if (doit.substr(k,m)=="likes"){
			name2="";
			for (j=kk+2;j<=n;j++)
				if (doit[j]=='\'') break;
				else name2+=doit[j];
			f[++top].names=name1;f[top].x=5;
			f[++top].names=name2;f[top].x=5;
		}
	}
	sort(f+1,f+top+1,cmp);
	tot=1;
	h[1].names=f[1].names;h[1].x=f[1].x;
	for (i=2;i<=top;i++)
		if (f[i].names!=f[i-1].names) h[++tot].names=f[i].names,h[tot].x=f[i].x;
		else h[tot].x+=f[i].x;
	sort(h+1,h+tot+1,cmp);
	for (i=1;i<=tot;i++)
		if (h[i].names!=myname) cout<<h[i].names<<endl;
	return 0;
}

谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢

2021/7/9 22:26
加载中...