样例全过了
#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;
}