# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1171687 | PedroBigMan | Navigation 2 (JOI21_navigation2) | C++20 | 295 ms | 876 KiB |
#include "Anna.h"
#include <iostream>
#include <vector>
#include <cmath>
#include <algorithm>
#include <string>
#include <map>
#include <unordered_map>
#include <set>
#include <unordered_set>
#include <queue>
#include <deque>
#include <list>
#include <iomanip>
#include <stdlib.h>
#include <time.h>
#include <cstring>
using namespace std;
typedef long long int ll;
typedef unsigned long long int ull;
typedef long double ld;
#define REP(i,a,b) for(ll i=(ll) a; i<(ll) b; i++)
#define pb push_back
#define mp make_pair
#define pl pair<ll,ll>
#define ff first
#define ss second
#define whole(x) x.begin(),x.end()
#define DEBUG(i) cout<<"Pedro Is The Master "<<i<<endl
#define INF 500000000LL
#define EPS 0.00000001
#define pi 3.14159
namespace
{
}
void Anna(int N, int K, vector<int> R,vector<int> C)
{
pl anchor={-1,-1}; vector<bool> used; REP(i,0,9) {used.pb(false);}
//cout<<"Anna 1"<<endl;
REP(i,0,7)
{
ll spe = (3*R[i]+C[i])%9;
used[spe]=true;
}
//cout<<"Anna 2"<<endl;
REP(i,0,9)
{
if(!used[i])
{
if(anchor.ff==-1) {anchor.ff=i;}
else if(anchor.ss==-1) {anchor.ss=i;}
}
}
if((anchor.ss-anchor.ff+9)%9 >4) {swap(anchor.ff,anchor.ss);}
ll z = (anchor.ss-anchor.ff+9)%9;
REP(i,0,N)
{
REP(j,0,N)
{
ll spe = (3*i+j)%9; spe-=anchor.ff; spe=(spe+9)%9;
if(spe==0 || spe==z) {SetFlag(i,j,12); continue;}
spe--; if(spe>=z) {spe--;}
ll x = R[spe]; ll y = C[spe];
if(max(abs(x-i),abs(y-j))<=1)
{
ll curflag=1;
REP(p,0,9)
{
ll shift_x=-1+(p/3); ll shift_y=-1+(p%3);
spe = (3*(i+shift_x)+j+shift_y)%9; spe-=anchor.ff; spe=(spe+18)%9;
if(spe==0 || spe==z) {continue;}
if(x==i+shift_x && y==j+shift_y) {SetFlag(i,j,curflag);break;}
curflag++;
}
}
else if(abs(x-i)>=2)
{
if(x>i) {SetFlag(i,j,10);}
else {SetFlag(i,j,11);}
continue;
}
else if(abs(y-j)>=2)
{
if(y>j) {SetFlag(i,j,8);}
else {SetFlag(i,j,9);}
continue;
}
}
}
}
#include "Bruno.h"
#include <iostream>
#include <vector>
#include <cmath>
#include <algorithm>
#include <string>
#include <map>
#include <unordered_map>
#include <set>
#include <unordered_set>
#include <queue>
#include <deque>
#include <list>
#include <iomanip>
#include <stdlib.h>
#include <time.h>
#include <cstring>
using namespace std;
typedef int ll;
typedef unsigned long long int ull;
typedef long double ld;
#define REP(i,a,b) for(ll i=(ll) a; i<(ll) b; i++)
#define pb push_back
#define mp make_pair
#define pl pair<ll,ll>
#define ff first
#define ss second
#define whole(x) x.begin(),x.end()
#define DEBUG(i) cout<<"Pedro Is The Master "<<i<<endl
#define INF 500000000LL
#define EPS 0.00000001
#define pi 3.14159
namespace
{
template<class A=ll>
void Out(vector<A> a) {REP(i,0,a.size()) {cout<<a[i]<<" ";} cout<<endl;}
}
vector<int> Bruno(int K, vector<int> f)
{
//cout<<"DEBUG"<<endl;
vector<int> spe;
REP(i,0,9) {spe.pb(-1);}
pl bad={-1,-1};
REP(i,0,9)
{
if(f[i]==12)
{
if(bad.ff==-1) {bad.ff=i;} else {bad.ss=i;}
}
}
ll z = bad.ss-bad.ff; if(z>4) {swap(bad.ff,bad.ss); z=-z+9; z=z%9;}
REP(i,0,9)
{
ll sp = (i - bad.ff + 9)%9;
if(sp==0 || sp==z) {spe[i]=-1; continue;}
sp--; if(sp>=z) {sp--;}
spe[i]=sp;
}
vector<ll> ans; REP(i,0,K) {ans.pb(-1);}
REP(i,0,9)
{
if(spe[i]==-1) {continue;}
ll ind = spe[i];
if(f[i]<=7)
{
ll val = f[i];
ll shift_x,shift_y;
ll curflag=1;
REP(p,0,9)
{
shift_x=-1+(p/3); shift_y=-1+(p%3);
ll index = i+3*shift_x+shift_y+9; index=index%9; if(index==bad.ff || index==bad.ss) {continue;}
if(val==curflag) {break;}
curflag++;
}
ll x = (i/3)-1; ll y = (i%3)-1;
x+=shift_x; y+=shift_y;
if(y<0) {ans[ind]=1;}
else if(y>0) {ans[ind]=0;}
else if(x<0) {ans[ind]=3;}
else if(x>0) {ans[ind]=2;}
else {ans[ind]=4;}
}
else
{
ans[ind]=f[i]-8;
}
}
return ans;
}
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |