Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <algorithm>
- #include <sstream>
- using namespace std;
- int main(){
- long long n, ipt, tmp;
- string str, tran;
- stringstream ss;
- getline(cin, str);
- for(auto &i:str)
- if(i == ',') i = ' ';
- ss.clear();
- ss << str;
- ss >> n >> ipt;
- vector<long long> v(n, ipt);
- vector<long long> vec;
- getline(cin, str);
- for(int i=0;i<str.size();i++){
- // -1 swap ; -2 give ; -3 amount ; -4 add
- if(str[i] == ']'){
- tran += " ";
- while(str[i] != ','){
- i++;
- if(i == str.size()) break;
- }
- }
- else if(isdigit(str[i])) tran += str[i];
- else if(str[i] == '<'){
- tran += " -1 ";
- while(str[i] != '>')
- i++;
- }
- else if(str[i] == '-'){
- tran += " -2 ";
- while(str[i] != '>')
- i++;
- }
- else if(str[i] == ',') tran += " -3 ";
- else if(str[i] == '^') tran += " -4 ";
- else if(str[i] == '[') tran += " ";
- }
- ss.clear();
- ss << tran;
- while(ss >> tmp)
- vec.emplace_back(tmp);
- for(int i=0;i<vec.size();){
- if(vec[i+1] == -1){
- swap(v[vec[i]], v[vec[i+2]]);
- i += 3;
- }
- else if(vec[i+1] == -2){
- if(vec[i+3] == -3){
- tmp = min(v[vec[i]], vec[i+4]);
- v[vec[i]] -= tmp;
- v[vec[i+2]] += tmp;
- i += 5;
- }
- else{
- tmp = v[vec[i]]/2;
- v[vec[i]] -= tmp;
- v[vec[i+2]] += tmp;
- i += 3;
- }
- }
- else if(vec[i+1] == -4){
- v[vec[i]] += vec[i+2];
- i += 3;
- }
- }
- auto it = v.begin();
- for( auto i : v)
- cout<<i<<",\n"[++it == v.end()];
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement