Submission #1217956

#TimeUsernameProblemLanguageResultExecution timeMemory
1217956somefolkSpirale (COCI18_spirale)C++20
80 / 80
33 ms328 KiB
#include <iostream> #include <cmath> #include <algorithm> #include <string> #include <vector> #include <map> #include <unordered_map> #include <queue> #include <set> #include <unordered_set> #include <complex> #include <list> #include <cassert> #include <chrono> #include <random> #include <stack> #include <iomanip> #include <fstream> using namespace std; #define endl "\n" // #define int long long const int INF = 1e9+7; const int MOD = 1e9+7; const int MAXN = 55; int n, m, k; vector<vector<int>> sol(MAXN+1, vector<int>(MAXN+1, INF)); vector<int> moves; int dx[4] = {-1, 0, 1, 0}; int dy[4] = {0, 1, 0, -1}; // U, R, D, L bool valid(int x, int y){ return (x >= 1 && y >= 1 && x <= n && y <= m); } void spirale(int x, int y, int dir){ int curr = 1; for(int i = 0; i < moves.size(); i++){ int d = i%4; if(dir == 1) d *= -1; d = (d+4)%4; for(int j = 0; j < moves[i]; j++){ x += dx[d]; y += dy[d]; curr++; if(valid(x, y)){ sol[x][y] = min(sol[x][y], curr); } } } } void solve(){ for(int i = 1; i <= 100; i++){ moves.push_back(i); moves.push_back(i); } cin >> n >> m >> k; while(k--){ int x, y, dir; cin >> x >> y >> dir; sol[x][y] = 1; spirale(x, y, dir); } for(int i = 1; i <= n; i++){ for(int j = 1; j <= m; j++){ cout << sol[i][j] << " "; } cout << endl; } } int32_t main(){ ios_base::sync_with_stdio(false); cin.tie(nullptr); int t = 1; // cin >> t; while(t--) solve(); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...