PKU 1281 MANAGER
没什么好分析,只要弄懂题意就行了。
Code
#include <iostream>
#include <deque>
#include <algorithm>
using namespace std;
int main()
{
deque<int> data,remove,del;
int maxprocess,n,processor,temp;
while(cin>>maxprocess)
{
cin>>n;
data.clear();remove.clear();del.clear();processor = 1;
for(int i=0;i<n;++i)
{
cin>>temp;
remove.push_back(temp);
}
char abc;
while(cin>>abc,abc!='e')
{
if(abc == 'p')
{ cin>>processor; continue; }
if(abc == 'a')
{
cin>>temp;
if(temp>maxprocess)
continue;
data.push_back(temp);
continue;
}
if(abc == 'r')
{
if(data.size()>0)
{
if(processor == 1)
{
del.push_back(*min_element(data.begin(),data.end()));
sort(data.begin(),data.end());
data.pop_front();
}
else
{
del.push_back(*max_element(data.begin(),data.end()));
sort(data.begin(),data.end());
data.pop_back();
}
}
else
{ cout<<"-1"<<endl;continue; }
}
}
for(int k = 0 ; k < n ; k++)
{
if(remove[k] <= del.size())
cout<<del[ remove[k] - 1]<<endl;
}
cout<<endl;
}
return 0;
}
#include <iostream>
#include <deque>
#include <algorithm>
using namespace std;
int main()
{
deque<int> data,remove,del;
int maxprocess,n,processor,temp;
while(cin>>maxprocess)
{
cin>>n;
data.clear();remove.clear();del.clear();processor = 1;
for(int i=0;i<n;++i)
{
cin>>temp;
remove.push_back(temp);
}
char abc;
while(cin>>abc,abc!='e')
{
if(abc == 'p')
{ cin>>processor; continue; }
if(abc == 'a')
{
cin>>temp;
if(temp>maxprocess)
continue;
data.push_back(temp);
continue;
}
if(abc == 'r')
{
if(data.size()>0)
{
if(processor == 1)
{
del.push_back(*min_element(data.begin(),data.end()));
sort(data.begin(),data.end());
data.pop_front();
}
else
{
del.push_back(*max_element(data.begin(),data.end()));
sort(data.begin(),data.end());
data.pop_back();
}
}
else
{ cout<<"-1"<<endl;continue; }
}
}
for(int k = 0 ; k < n ; k++)
{
if(remove[k] <= del.size())
cout<<del[ remove[k] - 1]<<endl;
}
cout<<endl;
}
return 0;
}