# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1235455 | candi_ositos | Spirale (COCI18_spirale) | C++20 | 41 ms | 328 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 time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |