library

This documentation is automatically generated by online-judge-tools/verification-helper

View the Project on GitHub beet-aizu/library

:heavy_check_mark: test/aoj/1312.test.cpp

Depends on

Code

// verification-helper: PROBLEM http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=1312

#include <bits/stdc++.h>
using namespace std;

#define call_from_test
#include "../../string/rollinghash.cpp"
#include "../../string/rectanglehash.cpp"
#undef call_from_test

int conv(char c){
  if(isupper(c)) return c-'A';
  if(islower(c)) return 26+c-'a';
  if(isdigit(c)) return 52+c-'0';
  if(c=='+') return 62;
  if(c=='/') return 63;
  assert(0);
}

vector<string> decode(vector<string> vs,int h,int w){
  vector<string> rs(h,string(w,'$'));
  for(int i=0;i<h;i++)
    for(int j=0;j<(int)vs[i].size();j++)
      for(int k=0;k<6&&j*6+k<w;k++)
        rs[i][j*6+k]=char('0'+((conv(vs[i][j])>>(5-k))&1));
  return rs;
}

signed main(){
  cin.tie(0);
  ios::sync_with_stdio(0);

  int w,h,p;
  while(cin>>w>>h>>p,w){
    vector<string> ss(h);
    for(int i=0;i<h;i++) cin>>ss[i];

    vector<string> ts(p);
    for(int i=0;i<p;i++) cin>>ts[i];

    const int MOD = 1e9+7;
    const int B1 = 1777771;
    const int B2 = 1e8+7;
    auto srh=rectangle_hash<int, MOD, B1, B2>(decode(ss,h,w),p,p);

    vector< vector<int> > found(h,vector<int>(w,0));

    auto pat=decode(ts,p,p);
    for(int rev=0;rev<2;rev++){
      for(int rot=0;rot<4;rot++){
        auto tmp(pat);
        for(int i=0;i<p;i++)
          for(int j=0;j<p;j++)
            pat[i][j]=tmp[j][p-(i+1)];

        auto val=rectangle_hash<int, MOD, B1, B2>(pat,p,p)[0][0];

        for(int i=0;i<h-p+1;i++)
          for(int j=0;j<w-p+1;j++)
            if(srh[i][j]==val) found[i][j]=1;
      }

      for(auto &s:pat)
        reverse(s.begin(),s.end());
    }

    int cnt=0;
    for(int i=0;i<h-p+1;i++)
      for(int j=0;j<w-p+1;j++)
        if(found[i][j]) cnt++;

    cout<<cnt<<"\n";
  }
  cout<<flush;
  return 0;
}
Traceback (most recent call last):
  File "/opt/hostedtoolcache/Python/3.11.3/x64/lib/python3.11/site-packages/onlinejudge_verify/documentation/build.py", line 71, in _render_source_code_stat
    bundled_code = language.bundle(stat.path, basedir=basedir, options={'include_paths': [basedir]}).decode()
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/hostedtoolcache/Python/3.11.3/x64/lib/python3.11/site-packages/onlinejudge_verify/languages/cplusplus.py", line 187, in bundle
    bundler.update(path)
  File "/opt/hostedtoolcache/Python/3.11.3/x64/lib/python3.11/site-packages/onlinejudge_verify/languages/cplusplus_bundle.py", line 401, in update
    self.update(self._resolve(pathlib.Path(included), included_from=path))
  File "/opt/hostedtoolcache/Python/3.11.3/x64/lib/python3.11/site-packages/onlinejudge_verify/languages/cplusplus_bundle.py", line 400, in update
    raise BundleErrorAt(path, i + 1, "unable to process #include in #if / #ifdef / #ifndef other than include guards")
onlinejudge_verify.languages.cplusplus_bundle.BundleErrorAt: string/rectanglehash.cpp: line 6: unable to process #include in #if / #ifdef / #ifndef other than include guards
Back to top page