제출 #1171687

#제출 시각아이디문제언어결과실행 시간메모리
1171687PedroBigManNavigation 2 (JOI21_navigation2)C++20
100 / 100
295 ms876 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 timeMemoryGrader output
Fetching results...