This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
#ifndef SKY
#include "rainbow.h"
#endif // SKY
using namespace std;
#define N 200010
#define ll long long
#define fs first
#define sc second
#define ii pair<ll,int>
#define pb push_back
int r,c,m;
struct BIT
{
    unordered_map<int,int>bit[N];
    void update(int x,int y,int val)
    {
        x=r-x+1;
        y=c-y+1;
        for(int u=x;u>0;u-=u&(-u))
            for(int v=y;v>0;v-=v&(-v))
                bit[u][v]+=val;
    }
    int get(int x,int y)
    {
        x=r-x+1;
        y=c-y+1;
        int res=0;
        for(int u=x;u<=r;u+=u&(-u))
            for(int v=y;v<=c;v+=v&(-v))
                if(bit[u].find(v)!=bit[u].end())
                    res+=bit[u][v];
        return res;
    }
};
int top,bot,lef,righ,ktr[110][110],visited[110][110],times;
vector<int>row={0,0,-1,1},col={-1,1,0,0};
void init(int RRR, int CCC, int sr, int sc, int MMM, char *S)
{
    r=RRR;
    c=CCC;
    m=MMM;
    ktr[sr][sc]=1;
    for(int i=1;i<=m;i++)
    {
        char ch=*S;
        if(i!=m)
            S++;
        if(ch=='N')
            sr--;
        if(ch=='S')
            sr++;
        if(ch=='E')
            sc++;
        if(ch=='W')
            sc--;
        ktr[sr][sc]=1;
        //cout<<sr<<" "<<sc<<endl;
    }
}
bool check(int u,int v)
{
    return(u>=top&&u<=bot&&v>=lef&&v<=righ&&ktr[u][v]==0&&visited[u][v]!=times);
}
void DFS(int u,int v)
{
    visited[u][v]=times;
    for(int i=0;i<4;i++)
        if(check(u+row[i],v+col[i]))
            DFS(u+row[i],v+col[i]);
}
int colour(int ar, int ac, int br, int bc)
{
    top=ar;
    bot=br;
    lef=ac;
    righ=bc;
    times++;
    int res=0;
    //cout<<ar<<" "<<ac<<" "<<br<<" "<<bc<<endl;
    for(int i=top;i<=bot;i++)
        for(int j=lef;j<=righ;j++)
            if(ktr[i][j]==0&&visited[i][j]!=times)
            {
               // cout<<i<<" "<<j<<endl;
                res++;
                DFS(i,j);
            }
    return res;
}
#ifdef SKY
int main()
{
    freopen("A.inp","r",stdin);
    freopen("A.out","w",stdout);
    ios::sync_with_stdio(0);
    cin.tie(NULL);
    cout.tie(NULL);
    int r,c,sr,sc,m;
    string S;
    cin>>r>>c>>sr>>sc>>m>>S;
    init(r,c,sr,sc,m,&S[0]);
    int q;
    cin>>q;
    while(q--)
    {
        int ar,ac,br,bc;
        cin>>ar>>ac>>br>>bc;
        cout<<colour(ar,ac,br,bc)<<endl;
    }
    return 0;
}
#endif
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |