題目描述
小愛得到了某大樓一天內按時間順序記錄的𝑛n條門禁出入記錄,每條記錄由兩個字符串組成,第一個字符串為出入人員姓名,第二個字符串表示該人員進出狀態、為?enter
?或?exit
?中一項,其中?enter
?為進入,?exit
?為離開。
小愛發現,部分人員的門禁信息存在錯誤,即某人在沒有進入記錄時便有了離開記錄,或是某人有進入記錄但沒有離開記錄。
已知在第一條記錄前及最后一條記錄后,大樓內均沒有任何人員。請你根據門禁記錄,來分析哪些人員的門禁信息存在錯誤?
輸入格式
輸入第一行,一個正整數𝑛n
接下來𝑛n行,每行兩個字符串,以空格隔開,其中第𝑖+1i+1行的兩字符串分別表示第𝑖i條記錄的人員姓名與出入信息。
輸出格式
按字典序輸出所有出入信息存在錯誤的人員姓名,按空格隔開
數據范圍
- 對于30%30%的數據,1≤𝑛≤101≤n≤10
- 對于60%60%的數據,1≤𝑛≤1031≤n≤103
- 對于100%100%的數據,1≤𝑛≤2×1041≤n≤2×104,且人員姓名字符串長度不超過1010。
樣例數據
輸入:
5
Xiaoai enter
Bob exit
Xiaoai exit
Alice exit
Alice enter
輸出:
Alice Bob
說明:
Bob只有exit數據,存在信息缺失
Alice的exit數據前不存在enter,而在最后一條enter后也沒有exit,存在信息缺失
詳見代碼:
#include <bits/stdc++.h>
using namespace std;
map<string,int> en;
int n;
int main()
{cin >> n;for (int i = 1; i <= n; i++) {string a, b;cin >> a >> b;if (b=="enter"){if(en[a]==0){en[a]=1;}else{en[a]=2;}}else{if (en[a]==1){en[a]=0;}else{en[a]=2;}}}for(auto it=en.begin();it!=en.end();it++){if (it->second!=0){cout<<it->first<<" ";}}return 0;
}