#include <iostream>
#include <fstream>
#include <string>
#include <vector>
using namespace std;

// File input function
vector <string> fileinput();
// File output function
void fileoutput(vector <string>);

int main() {
    system("color 02");
    // Vector holding each line of the input
    vector <string> input;
    // Vector holding each line of the output
    vector <string> output;
    
    // Read input from input file
    input = fileinput();
    
    vector <string> dir;
    string word, line;
    for (int i=0; i<10; i++) {
        if (i % 2 == 0) {
            if (input[i].length() > 1) {
                line = input[i];
                int j = 1;
                while (j < input[i].length()) {
                    word = line.substr(j, line.find("/", j)-j);
                    //cout << endl << "word is " << word;
                    if (word == ("..")) {
                        //cout << "Up";
                        if (!dir.empty())
                            dir.pop_back();    
                    }
                    else if (word == (".")) {
                        //cout << "Stay";    
                    }
                    else {
                        dir.push_back(word);    
                    }
                    j = line.find("/", j)+1;
                } 
            }
            line = input[i+1];
            int j = 0;
            while (j < input[i+1].length()) {
                //cout << endl << "input is " << input[i+1];
                word = line.substr(j, line.find("/", j)-j);
                if (word == ("..")) {
                    //cout << "Up";
                    if (!dir.empty())
                        dir.pop_back();    
                }
                else if (word == (".")) {
                    //cout << "Stay";    
                }
                else {
                    //cout << endl << "Initially adding " << word;
                    dir.push_back(word);    
                }
                j = line.find("/", j)+1;
            }
        
            line = "/";
        
            for (int k=0; k<dir.size(); k++) {
                line += dir.at(k) + "/";        
            }
            ////cout << endl << "Adding " << line << "to output";
            output.push_back(line);
            dir.clear();
        }
    }
    
    
    // Writes output to output files
    fileoutput(output);
    cin.get();
    return 0;
}

// File input function
vector <string> fileinput() {
    vector <string> inputtext;
    string line;
    ifstream InputFile("DATA3.txt");
    if (InputFile.is_open()) {
        while (!InputFile.eof()) {
            getline(InputFile, line);
            inputtext.push_back(line);
        }
        ////cout << "Successfully read from " << "DATA3.txt" << ".\n";
        InputFile.close();
    }
    else {
        ////cout << "Failed to open input file.\n";
    }
    
    return inputtext;
}

// File output function
void fileoutput(vector <string> outputtext) {
    if (!outputtext.empty()) {
        ofstream OutputFile("OUT3.txt");
        int i;
        if (OutputFile.is_open()) {
            for (i = 0; i < outputtext.size(); i++) {
                OutputFile << outputtext.at(i);
                if( i < outputtext.size()-1 )
                    OutputFile << endl;
            }
            ////cout << "Successfully wrote to " << "OUT3.txt" << ".\n";
        }
        else {
            ////cout << "Failed to open output file.\n";
        }
    }
    else {
        ////cout << "Could not write to file - output vector is empty.\n";
    }
}

