217602026-01-13 19:29:55TaxiradioCseppkőbarlang (45 pont)cpp17Hibás válasz 12/4524ms1332 KiB
// Source: https://usaco.guide/general/io

#include <algorithm>
#include <bits/stdc++.h>
using namespace std;

#define int int64_t

vector<array<int , 2>> d = {{-1 , 0} , {1 , 0} , {0 , -1} , {0 , 1}};
    vector<vector<int>> a;

int dfs(int x , int y){
    int o = a[x][y];
    a[x][y] = 0;
    int ans = o;
    for(auto [u , v] : d){
        if(a[x+u][y+v]!= 0)ans = min(ans , a[x+u][y+v]);
        if(a[x+u][y+v]!= 0 && a[x+u][y+v] >= o)ans = min(dfs(x+u , y+v) , ans);
    }
    return ans;
}

int32_t main() {
    int n , m ; cin >> n >> m;
    a.resize(n+2 , vector<int> (m+2 , 0));
    for(int i = 0; i < n; i++){
        for(int j = 0; j < m; j++){
            int x; cin >> x;
            a[i+1][j+1] = x;
        }
    }
    for(int i = 1; i <= n; i++){
        for(int j = 1; j <= m; j++){
            if(a[i][j] == 0)continue;
            int w = a[i][j];
            if(dfs(i , j) >= w)a[i][j] = w;
        }
    }
    vector<array<int , 2>> ans;
    for(int i = 1; i <= n; i++){
        for(int j = 1; j <= m; j++){
            if(a[i][j] != 0)ans.push_back({i , j});
        }
    }
    cout << ans.size() << endl;
    for(auto z:ans)cout << z[0] << " " << z[1] << "\n";
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base12/45
1Elfogadva0/02ms316 KiB
2Hibás válasz0/02ms316 KiB
3Elfogadva1/11ms316 KiB
4Elfogadva1/12ms560 KiB
5Elfogadva2/213ms1332 KiB
6Elfogadva2/212ms812 KiB
7Elfogadva2/212ms796 KiB
8Elfogadva2/21ms316 KiB
9Elfogadva2/21ms332 KiB
10Hibás válasz0/318ms1096 KiB
11Hibás válasz0/324ms1076 KiB
12Hibás válasz0/319ms744 KiB
13Hibás válasz0/318ms728 KiB
14Hibás válasz0/314ms1076 KiB
15Hibás válasz0/314ms1076 KiB
16Hibás válasz0/313ms1044 KiB
17Hibás válasz0/314ms1076 KiB
18Hibás válasz0/314ms1076 KiB
19Hibás válasz0/314ms1052 KiB
20Hibás válasz0/323ms1044 KiB