Submission #1306809

#TimeUsernameProblemLanguageResultExecution timeMemory
1306809yusif_agalarliCrtanje (COCI20_crtanje)C++20
30 / 50
1 ms572 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long

const int mod = 1000000007;
const int inf = 1000005;
const int sz = 100005;

int n;

void solve(){
    cin>>n;
    string s;
    cin>>s;
    int mx1 = 0, mx2 = 0, l = 0;
    for(int i=0; i<s.size(); ++i){
        if(s[i] == '+'){
            l++;
            mx1 = max(mx1, l);
        }
        else if(s[i] == '-'){
            l = 0;
        }
    }
    l = 0;
    for(int i=0; i<s.size(); ++i){
        if(s[i] == '-'){
            l++;
            mx2 = max(mx2, l);
        }
        else if(s[i] == '+'){
            l = 0;
        }
    }
    int col = max(mx1, mx2);
    char g[col][n];
    for(int i=0; i<col; ++i){
        for(int j=0; j<n; ++j){
            g[i][j] = '.';
        }
    }
    // c1 = c2 = 0;
    int x1 = s.find('+'), x2 = s.find('-');
    if(x1 == string::npos){
        // ancaq menfi var
        // cout<<"SALAM";
        int row = 0;
        for(int i=0; i<n; ++i){
            if(s[i] == '-'){
                g[row++][i] = '\\';
            }
            else if(s[i] == '='){
              if(row >= col) row--;
                g[row][i] = '_';
            }
        }
        for(int i=0; i<col; ++i){
            for(int j=0; j<n; ++j){
                cout<<g[i][j];
            }
            cout<<endl;
        }
        return;
    }
    if(s.find('-') == string::npos){
        // ancaq musbet var
        int row = col - 1;
        for(int i=0; i<n; ++i){
            if(s[i] == '+'){
                g[row--][i] = '/';
            }
            else if(s[i] == '='){
              if(row < 0) row++;
                g[row][i] = '_';
            }
        }
        for(int i=0; i<col; ++i){
            for(int j=0; j<n; ++j){
                cout<<g[i][j];
            }
            cout<<endl;
        }
        return;
    }
    int cnt1 = 0; // musbet
    for(int i=x1; i<s.size(); ++i){
        if(s[i] == '+'){
          cnt1++;
        }
        else if(s[i] == '-'){
          break;
        }
    }
    int cnt2 = 0;
    for(int i=x2; i<s.size(); ++i){
        if(s[i] == '-'){
          cnt2++;
        }
        else if(s[i] == '+'){
          break;
        }
    }
    if(x1 < x2){ 
    // musbet birinci gelir
      int row = col - 1;
        if(cnt2 >= cnt1){
          // menfi maximum
          row = cnt1;
        }
        for(int i=0; i<n; ++i){
            // if(row < 0) row++;
            // if(row > 0) row--;
            if(s[i] == '+'){
              g[row--][i] = '/';
              if(row < 0) row++;
            }
            else if(s[i] == '-'){
              g[row++][i] = '\\';
              if(row >= col) row--;
            }
            else{
              g[row][i] = '_';
            }
          }
          for(int i=0; i<col; ++i){
            for(int j=0; j<n; ++j){
              cout<<g[i][j];
            }
            cout<<endl;
          }
        return;
    }
    else{
      // birinci menfi olarsa:
        int row = 0;
        if(cnt2 <= cnt1){
          // menfi maximum
          row = col - cnt2;
        }
        for(int i=0; i<n; ++i){
            // if(row < 0) row++;
            // if(row > 0) row--;
            if(s[i] == '+'){
              g[row--][i] = '/';
              if(row < 0) row++;
            }
            else if(s[i] == '-'){
              g[row++][i] = '\\';
              if(row >= col) row--;
            }
            else{
              g[row][i] = '_';
            }
          }
          for(int i=0; i<col; ++i){
            for(int j=0; j<n; ++j){
              cout<<g[i][j];
            }
            cout<<endl;
          }
        return;
    }
    // for(int i=0; i<col; ++i){
    //     for(int j=0; j<n; ++j){
    //         cout<<g[i][j];
    //     }
    //     cout<<endl;
    // }
}
signed main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);
    // freopen("stdin", "r",stdin);  
    // freopen("stdout", "w",stdout);
    
    int t=1;
    // cin>>t;
    while(t--) solve();
}
#Verdict Execution timeMemoryGrader output
Fetching results...