Submission #1235455

#TimeUsernameProblemLanguageResultExecution timeMemory
1235455candi_ositosSpirale (COCI18_spirale)C++20
80 / 80
41 ms328 KiB
#include <bits/stdc++.h> #define up 1 #define down 2 #define right 3 #define left 4 #define cw 0 #define ccw 1 using namespace std; int n, m; vector <vector <int> > fm; vector <vector <int> > cs(int x, int y, bool o, int d){ vector <vector <int> > mtc; mtc.assign(n, vector <int>(m, 0)); int mah=y, mih=y, may=x, miy=x; int ax=x; int ay=y; int mrw=1; mtc[y][x]=mrw; ++mrw; while((mih>=0 || mah<n) || (may<m || miy>=0)){ switch(d){ case up: --ay; if(mih>ay){ mih=ay; if(o==cw){ d=right; } else{ d=left; } } break; case down: ++ay; if(mah<ay){ mah=ay; if(o==cw){ d=left; } else{ d=right; } } break; case right: ++ax; if(may<ax){ may=ax; if(o==cw){ d=down; } else{ d=up; } } break; case left: --ax; if(miy>ax){ miy=ax; if(o==cw){ d=up; } else{ d=down; } } break; } if((ay>=0 && ax>=0) && (ay<n && ax<m)){ mtc[ay][ax]=mrw; } ++mrw; } return mtc; } int main(){ int k; cin>>n>>m>>k; fm.assign(n, vector<int>(m, -1)); for(int i=0; i<k; ++i){ int x, y, o, d=up; cin>>x>>y>>o; --x; --y; vector <vector <int> > ma=cs(y, x, o, d); for(int j=0; j<n; ++j){ for(int k=0; k<m; ++k){ if(fm[j][k]>ma[j][k] || fm[j][k]==-1){ fm[j][k]=ma[j][k]; } } } } for(int i=0; i<n; ++i){ for(int j=0; j<m; ++j){ cout<<fm[i][j]<<" "; } cout<<"\n"; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...