题目描述
使用3个队列,分别保留手机上最近10个,(0)未接来电、(1)已接来电、(2)已拨电话。
输入
全部通话记录,每行一条记录。 每条记录包含两个数字,第一个数代表记录类型,第二个数代表手机号码。
输出
分3列输出未接来电、已接来电、已拨电话。 列之间用空格分割,后接电话在最先输出,不足10条用0占位。
样例输入
2 18270477699
1 10149800116
0 19906559817
1 16209018105
1 16804212234
2 19289130583
1 17982711123
0 10897630486
1 11860787674
0 15192777554
样例输出
15192777554 11860787674 19289130583
10897630486 17982711123 18270477699
19906559817 16804212234 0
0 16209018105 0
0 10149800116 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
参考代码
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <queue>
#include <stack>
using namespace std;
int main()
{
queue<string>missedCalls;
queue<string>answeredPhone;
queue<string>alreadyCalled;
int type;
string phonrNumber;
while(cin>>type>>phonrNumber)
{
if(type == 0){
missedCalls.push(phonrNumber);
}
else if(type == 1){
answeredPhone.push(phonrNumber);
}
else if(type == 2){
alreadyCalled.push(phonrNumber);
}
}
for(int i=0;i<10;i++)
{
if(!missedCalls.empty())
{
cout<<missedCalls.pop()<<" ";
}
else
{
cout<<"0 ";
}
if(!answeredPhone.empty())
{
cout<<answeredPhone.pop()<<" ";
}
else
{
cout<<"0 ";
}
if(!alreadyCalled.empty())
{
cout<<alreadyCalled.pop()<<endl;
}
else
{
cout<<"0 "<<endl;
}
}
return 0;
}