| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 1357964 | MMihalev | Navigation 2 (JOI21_navigation2) | C++20 | 0 ms | 780 KiB |
#include "Anna.h"
#include <vector>
#include<iostream>
using namespace std;
namespace {
int f(int r, int c, int x,int y)
{
if(r%3==0 && c%3==0)return 14;
if(x==r-1 && y==c-1)return 1;
if(x==r-1 && y==c)return 2;
if(x==r-1 && y==c+1)return 3;
if(x==r && y==c-1)return 4;
if(x==r && y==c)return 5;
if(x==r && y==c+1)return 6;
if(x==r+1 && y==c-1)return 7;
if(x==r+1 && y==c)return 8;
if(x==r+1 && y==c+1)return 9;
if(y>c)return 10;
if(y<c)return 11;
if(x>r)return 12;
if(x<r)return 13;
}
}
void Anna(int N, int K, std::vector<int> R, std::vector<int> C)
{
for (int r = 0; r < N; r++) {
for (int c = 0; c < N; c++) {
int x=-1,y=-1;
if(r%3==0 && c%3==1){x=R[0];y=R[0];}
if(r%3==0 && c%3==2){x=R[1];y=R[1];}
if(r%3==1 && c%3==0){x=R[2];y=R[2];}
if(r%3==1 && c%3==1){x=R[3];y=R[3];}
if(r%3==1 && c%3==2){x=R[4];y=R[4];}
if(r%3==2 && c%3==0){x=R[5];y=R[5];}
if(r%3==2 && c%3==1){x=R[6];y=R[6];}
SetFlag(r, c, f(r, c, x,y));
}
}
}
#include "Bruno.h"
#include <vector>
#include<iostream>
using namespace std;
namespace
{
int position(int r,int c)
{
if(r%3==0 && c%3==1)return 0;
if(r%3==0 && c%3==2)return 1;
if(r%3==1 && c%3==0)return 2;
if(r%3==1 && c%3==1)return 3;
if(r%3==1 && c%3==2)return 4;
if(r%3==2 && c%3==0)return 5;
if(r%3==2 && c%3==1)return 6;
}
int dir(int r,int c,int x,int y)
{
if(y>c)return 0;
if(y<c)return 1;
if(x>r)return 2;
if(x<r)return 3;
return 4;
}
}
std::vector<int> Bruno(int K, std::vector<int> value)
{
vector<int>ans(7);
int sz=0;
int initx,inity;
for(int r=0;r<3;r++)
{
for(int c=0;c<3;c++)
{
int val=value[sz++];
if(val==14){initx=r;inity=c;break;}
}
}
sz=0;
for(int r=0;r<3;r++)
{
for(int c=0;c<3;c++)
{
int val=value[sz++];
if(initx==r && inity==c)continue;
int pos=position((r-initx+3)%3,(c-inity+3)%3);
if(val>=10)
{
ans[pos]=val-10;
continue;
}
int times=val;
for(int dx=-1;dx<1;dx++)
{
for(int dy=-1;dy<1;dy++)
{
times--;
if(times==0)
{
int nr=r+dx,nc=c+dy;
ans[pos]=dir(1,1,nr,nc);
break;
}
}
}
}
}
return ans;
}
컴파일 시 표준 에러 (stderr) 메시지
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
