제출 #677256

#제출 시각아이디문제언어결과실행 시간메모리
677256AriadnaCrtanje (COCI20_crtanje)C++14
50 / 50
1 ms308 KiB

#include <bits/stdc++.h>

using namespace std;

int main()
{
    int n;
    cin >> n;
    vector < pair < int, int > > worth(n + 1, {0, 0});
    int maximum = -1e9, minimum = 0;
    for (int i = 1; i <= n; ++i) {
        char c; 
        cin >> c;
        if (c == '+') {
            if (worth[i - 1].second == 1)
                worth[i] = make_pair(worth[i - 1].first + 1, 1);
            else 
                worth[i] = make_pair(worth[i - 1].first, 1);
        } else if (c == '-') {
            if (worth[i - 1].second == 1)
                worth[i] = make_pair(worth[i - 1].first, -1);
            else worth[i] = make_pair(worth[i - 1].first - 1, -1);
        } else {
            if (worth[i - 1].second == 1) {
                worth[i] = make_pair(worth[i - 1].first + 1, 0);
            } else if (worth[i - 1].second == -1) {
                worth[i] = make_pair(worth[i - 1].first, 0);
            } else {
                worth[i] = make_pair(worth[i - 1].first, 0);
            }
        }
        maximum = max(maximum, worth[i].first);
        minimum = min(minimum, worth[i].first);
    }
    
    for (int i = maximum; i >= minimum; --i) {
        for (int j = 1; j <= n; ++j) {
            // posición actual = maximum - i
            int a = worth[j].second;
            if (a == 1) { // +
                if (i == worth[j].first)
                    cout << '/';
                else cout << '.';
            } else if (a == 0) { // =
                if (i == worth[j].first)
                    cout << '_';
                else cout << '.';
            } else { // -
                if (i == worth[j].first)
                    cout << '\\';
                else cout << '.';
            }
        }
        cout << '\n';
    }
    
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...