# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
904531 | vjudge1 | 무지개나라 (APIO17_rainbow) | C++17 | 0 ms | 0 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
bitset<3> was[200001];
int pref1[200005];
int pref2[200005];
int pref12[200005];
void init(int r,int c,int sr,int sc,int m,char* s){
int px=sr,py=sc;
was[py][px]=1;
for(int i=0;i<m;i++){
char u=s[i];
if(u=='S'){
px++;
}else if(u=='N'){
px--;
}else if(u=='E'){
py++;
}else{
py--;
}
// cout<<px<<' '<<py<<endl;
was[py][px]=1;
}
for(int j=2;j<=c;j++){
pref12[j]=pref12[j-1];
if((was[j].count()==0 and was[j-1].count()==0) or (was[j]|was[j-1]).count()>0){
}else{
pref12[j]++;
}
}
for(int j=2;j<=c;j++){
pref1[j]=pref1[j-1];
pref2[j]=pref2[j-1];
if(was[j][1] and was[j-1][1]){
pref1[j]++;
}
if(was[j][2] and was[j-1][2]){
pref2[j]++;
}
}
}
int colour(int lx,int ly,int rx,int ry){
if(lx<rx){
return pref12[ry]-pref12[ly];
}else if(lx==1){
return pref1[ry]-pref1[ly];
}else{
return pref2[ry]-pref2[ly];
}
}