洛谷[P4896] Oier们的烦恼

模拟即可。
用两个map存老师学生的名字,用getline读取。
如果符合题意,就标记,最后加个判断

#include<bits/stdc++.h>
using namespace std;
int a,i,j,ans;
bool came;
map<string ,int>mmp;
map<string ,int>mmq;
string s,s1[7],s2,s3;
char qqq;
int main(){
    ios::sync_with_stdio(false);
    cin>>a;
    for(i=1;i<=3;i++)
        cin>>s,mmp[s]=1;
    for(i=1;i<=5;i++)
        cin>>s1[i],mmp[s1[i]]=2,mmq[s1[i]]=0;
    sort(s1+1,s1+6);
    for(i=1;i<=a;i++)
    {
        cin>>s;
        char qqq=cin.get();
        if(qqq=='\n')
            continue;
        if(mmp[s]==1)
        {
            getline(cin,s2);
            if(s2=="came!")
            {
                for(j=1;j<=5;j++)
                    if(mmq[s1[j]]==1)
                        mmq[s1[j]]=2;
                came=1;
            }
            if(s2=="left!")
                came=0;
            continue;
        }
        if(mmp[s]==2)
        {
            getline(cin,s2);
            if(s2=="started playing games!")
            {
                if(came==0)
                    mmq[s]=1;
                else
                    mmq[s]=2;
            }
            if(s2=="stopped playing games!")
                if(mmq[s]!=2)
                    mmq[s]=0;
            continue;
        }
        getline(cin,s2);
    }
    bool my;
    for(i=1;i<=5;i++)
        if(mmq[s1[i]]==2)
            cout<<s1[i]<<' ',ans++;
    if(ans==5)
        cout<<"\nHow Bad Oiers Are!";
    if(ans==0)
        cout<<"How Good Oiers Are!";
    return 0;
}

 

 
posted @ 2018-10-23 20:18  Viston  阅读(166)  评论(0)    收藏  举报