题意:首先,接到碟子先放在第一堆上,然后转移到第二堆上,然后再把盘子送走。
题记:按照题意模拟,当第二堆盘子数量不足时,要先把第二堆盘子先送出去,在把第一堆的全部盘子转移过来,再按数量送盘子出去。
#include<iostream>
#include<cstring>
using namespace std;
int n;
int a[3];
int main(){
while(cin>>n&&n){
string s;
memset(a,0,sizeof(a));
int x;
while(n--){
cin>>s>>x;
if(s[0]=='D'){
cout<<"DROP 2 "<<x<<endl;
a[2]+=x;
}
else{
if(a[1]>=x){
cout<<"TAKE 1 "<<x<<endl;
a[1]-=x;
}
else{
if(a[1]<x&&a[1]){
cout<<"TAKE 1 "<<a[1]<<endl;
x-=a[1];
}
cout<<"MOVE 2->1 "<<a[2]<<endl;
a[1]=a[2],a[2]=0;
cout<<"TAKE 1 "<<x<<endl;
a[1]-=x;
}
}
}
cout<<endl;
}
return 0;
}