求助,哪里错了?
查看原帖
求助,哪里错了?
298402
cccyyylll888楼主2021/10/3 20:58

样例全过了

#include<iostream>
#include<map>
#include<string>
#include<algorithm>
using namespace std;
string s[10];
struct na{
	string name;
	int sc;
}a[105];
bool cmp(na x,na y)
{
	if(x.sc != y.sc)
	return x.sc > y.sc;
	return x.name < y.name;
}
map<string,int> p;
int main()
{
    string my;
    cin >> my;
    int n;
    cin >> n;
    getchar(); 
    int peo = 0;
    for(int i = 1;i <= n;i++)
    {
    	string t;
    	getline(cin,t);
    	for(int i = 1;i <= 9;i++)
    	s[i] = "";
    	int cnt = 1;
    	for(int j = 0;j < t.size();j++)
    	{
    		if(t[j] == ' ')
    		{
    			cnt++;
    			continue;
			}
			s[cnt] += t[j];
		}
		if(cnt == 5)
		{
			string m;
			for(int i = 0;i < s[4].size()-2;i++)
			m += s[4][i];
			if(s[2] == "posted")
			{
				if(p[s[1]] == 0)
				{
					peo++;
					p[s[1]] = peo;
					a[peo].name = s[1];
					a[peo].sc += 15;
				}
				else
				{
					a[p[s[1]]].sc += 15;
				}
				if(p[m] == 0)
				{
					peo++;
					p[m] = peo;
					a[peo].name = m;
					a[peo].sc += 15;
				}
				else
				{
					a[p[m]].sc += 15;
				}
			}
			if(s[2] == "commented")
			{
				if(p[s[1]] == 0)
				{
					peo++;
					p[s[1]] = peo;
					a[peo].name = s[1];
					a[peo].sc += 10;
				}
				else
				{
					a[p[s[1]]].sc += 10;
				}
				if(p[m] == 0)
				{
					peo++;
					p[m] = peo;
					a[peo].name = m;
					a[peo].sc += 10;
				}
				else
				{
					a[p[m]].sc += 10;
				}
			}
		}
		else
		{
			string m;
			for(int i = 0;i < s[3].size()-2;i++)
			m += s[3][i];
			if(p[s[1]] == 0)
			{
				peo++;
				p[s[1]] = peo;
				a[peo].name = s[1];
				a[peo].sc += 5;
			}
			else
			{
				a[p[s[1]]].sc += 5;
			}
			if(p[m] == 0)
			{
				peo++;
				p[m] = peo;
				a[peo].name = m;
				a[peo].sc += 5;
			}
			else
			{
				a[p[m]].sc += 5;
			}
		}
	}
	sort(a+1,a+peo+1,cmp);
	for(int i = 1;i <= peo;i++)
	{
		if(a[i].name != my)
		{
			cout << a[i].name << endl;
		}
	}
    return 0;
}
2021/10/3 20:58
加载中...