Submission

Status:
[P][P][P][TS][PT][PT][PT][PT][PT][PT]

Score: 30

User: hmmm

Problemset: ตัดกระดาษ

Language: cpp

Time: 1.087 second

Submitted On: 2025-04-18 14:52:42

#include<bits/stdc++.h>
using namespace std;
const int N=1e5;
int mp2[N+5],mp[N+5];
unordered_set<int> s;
// unordered_map<int,int> mp;
vector<int> p;


int main(){
	ios::sync_with_stdio(0); cin.tie(0);
  int l,w,n,m,q;
  cin >> l >> w >> n >> m >> q;
  int t,x;
  cin >> t;
  // p.push_back(t);
  if(t<=N) mp[t]++,s.insert(t);
  for(int i=2;i<=n;i++){
    cin >> x;
    if(x-t<=N) mp[x-t]++,s.insert(x-t);
    // p.push_back(x-t);
    t=x;
  }
  if(l-x<=N) mp[l-x]++,s.insert(l-x);
  // p.push_back(n-t);
  t=0;
  for(int i=1;i<=m;i++){
    cin >> x;
    for(auto e:s){
      if(1ll*(x-t)*e<=N) mp2[(x-t)*e]+=mp[e];
    }
    t=x;
  }
  for(auto e:s){
    if(1ll*(w-x)*e<=N) mp2[(w-x)*e]+=mp[e];
  }
  while(q--){
    cin >> x;
    cout << mp2[x] << "\n";
  }
}