95 lines
2.5 KiB
C++
95 lines
2.5 KiB
C++
|
#include <iostream>
|
||
|
#include <vector>
|
||
|
#include <string>
|
||
|
#include <algorithm>
|
||
|
int main(int argc, char* argv[]){
|
||
|
std::cout<<"paste input followed by a ; IGNORE THE NUMBER LINE!!\n";
|
||
|
std::vector<std::vector<char>> stack = {{}};
|
||
|
std::vector<std::vector<int>> moves;
|
||
|
int step = 0;
|
||
|
std::string line = "";
|
||
|
while(getline(std::cin, line)){
|
||
|
if(line==";")
|
||
|
break;
|
||
|
|
||
|
if(line=="")
|
||
|
step=1;
|
||
|
if(step==0){
|
||
|
//parsing initial boxes
|
||
|
for(int i = 0;i<=line.size();i+=4){
|
||
|
if(line[i+1]!=' '){
|
||
|
while(i/4>=stack.size()){
|
||
|
stack.push_back({});
|
||
|
|
||
|
}
|
||
|
stack[i/4].push_back(line[i+1]);
|
||
|
}
|
||
|
}
|
||
|
} else {
|
||
|
//command mode
|
||
|
if(line[0]!=' '){ //ignore the number line
|
||
|
std::string s1 = "";
|
||
|
int index = 0;
|
||
|
//moves.push_back({0,0,0});
|
||
|
std::vector<int> temp = {0,0,0};
|
||
|
std::vector<int> bu = temp;
|
||
|
for(int i = 0; i<=line.size();i++){
|
||
|
if(line[i]==' '){
|
||
|
|
||
|
for(int z = i+1; z!=line.size();z++){
|
||
|
if(line[z]==' ')
|
||
|
break;
|
||
|
s1+=line[z];
|
||
|
}
|
||
|
|
||
|
for(int z = 0; z!=temp.size();z++){
|
||
|
if(temp[z]==0){
|
||
|
temp[z]=stoi(s1);
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
i+=s1.size()+1;
|
||
|
s1 = "";
|
||
|
}
|
||
|
}
|
||
|
if(temp!=bu )
|
||
|
moves.push_back(temp);
|
||
|
}
|
||
|
//std::cout<<s1;
|
||
|
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
std::cout<<std::endl;
|
||
|
for(int i = 0;i!=stack.size();i++){
|
||
|
//std::cout<<i+1;
|
||
|
for(int z = 0; z!=stack[i].size();z++){
|
||
|
std::cout<<stack[i][z];
|
||
|
}
|
||
|
std::cout<<std::endl;
|
||
|
}
|
||
|
for(int i = 0;i!=moves.size();i++){
|
||
|
//for(int z = 0; z!=moves[i].size();z++){
|
||
|
//std::cout<<stack[moves[i][1]-1][0];
|
||
|
for(int z = 0;z!=moves[i][0];z++){
|
||
|
stack[moves[i][2]-1].insert(stack[moves[i][2]-1].begin(),stack[moves[i][1]-1][0]);
|
||
|
//stack[moves[i][1]-1].erase(stack[moves[i][1]-1].begin());
|
||
|
std::cout<<stack[moves[i][1]-1][0];
|
||
|
}
|
||
|
std::cout<<std::endl;
|
||
|
//}
|
||
|
|
||
|
}
|
||
|
std::cout<<std::endl;
|
||
|
for(int i = 0;i!=stack.size();i++){
|
||
|
//std::cout<<i+1;
|
||
|
for(int z = 0; z!=stack[i].size();z++){
|
||
|
std::cout<<stack[i][z];
|
||
|
}
|
||
|
std::cout<<std::endl;
|
||
|
}
|
||
|
//std::cout<<moves.size();
|
||
|
return 0;
|
||
|
}
|