240282026-02-03 18:06:29algoproÚtépítéscpp17Wrong answer 0/100899ms6060 KiB
// UUID: a1d30008-66fe-4293-8da8-3dca3cea2a98
#include <bits/stdc++.h>
using namespace std;
#define int long long

vector<vector<pair<int,int>>>adj;
vector<bool>elek;
vector<pair<int,char>>elek2;
vector<bool>foglalt;
vector<bool>volte;

template<typename t1, typename t2>
std::ostream& operator<<(std::ostream& os, std::pair<t1,t2>p ){
    
    os << p.first << ' ' << p.second << "; ";
    return os;
}

template<class t>
std::ostream& operator<<(std::ostream& os, std::vector<t>v){
    for(t a : v){
        os << a<< " ";
    }
    os << "\n";
    return os;
}

bool dfs(int cs, bool prev = 1){
    cout << cs << endl;
    if(!foglalt[cs] && !prev){
        foglalt[cs] = 1;
        return 1;
    }
    volte[cs] = 1;
    for(auto [i,el] : adj[cs]){
        if((elek[el] xor prev) && !volte[i]){
            if(dfs(i,!prev)){
                elek[el] = !elek[el];
                //cout << cs << " ";
                return 1;
            }
        }
    }
    return 0;
}



signed main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    int n,m;
    cin >> n >> m;
    adj.assign((n+1)*(m+1),vector<pair<int,int>>());
    foglalt.assign((n+1)*(m+1),0);
    volte.assign((n+1)*(m+1),0);

    for(int i = 0; i < n; i++){
        for(int j = 0; j < m; j++){
            char c;
            cin >> c;
            if(c == '/'){
                m++;
                cout << j << "; ";
                adj[i*m+j+1].push_back({i*m+j+m, elek2.size()});
                adj[i*m+j+m].push_back({i*m+j+1, elek2.size()});
                m--;
                elek2.push_back({i*m+j, c});
            }else if(c == '\\'){
                m++;
                adj[i*m+j].push_back({i*m+j+m+1, elek2.size()});
                adj[i*m+j+m+1].push_back({i*m+j, elek2.size()});
                m--;
                elek2.push_back({i*m+j, c});
            }
        }
    }
    elek.assign(elek2.size(),0);

    
    int ans = 0;
    for(int i = 0; i <= n ; i++){
        for(int j= 0; j <= m; j+=2){
            volte.assign((n+1)*(m+1),0);
            int r = i*(m+1)+j;
            if(dfs(r)){
                ans++;
                foglalt[r] = 1;
            }
        }
    }
    vector<string>b(n,string(m, '.'));
    for(int i = 0; i < elek.size(); i++ ){
        if(elek[i]){
            b[elek2[i].first/m][elek2[i].first%m] = elek2[i].second;
        }
    }
    for(auto s : b){
        cout << s << '\n';
    }
}
/*
1 2 1
1 2
*/
SubtaskSumTestVerdictTimeMemory
base0/100
1Wrong answer0/01ms316 KiB
2Wrong answer0/082ms3500 KiB
3Wrong answer0/51ms316 KiB
4Wrong answer0/51ms512 KiB
5Wrong answer0/51ms316 KiB
6Wrong answer0/53ms476 KiB
7Wrong answer0/51ms316 KiB
8Wrong answer0/52ms332 KiB
9Wrong answer0/53ms316 KiB
10Wrong answer0/53ms316 KiB
11Wrong answer0/59ms564 KiB
12Wrong answer0/58ms760 KiB
13Wrong answer0/514ms564 KiB
14Wrong answer0/59ms564 KiB
15Wrong answer0/541ms1460 KiB
16Time limit exceeded0/5899ms5804 KiB
17Time limit exceeded0/5899ms5292 KiB
18Time limit exceeded0/5899ms6052 KiB
19Time limit exceeded0/5883ms6060 KiB
20Wrong answer0/5172ms4520 KiB
21Wrong answer0/5182ms4508 KiB
22Wrong answer0/561ms2708 KiB