Pagini recente » Cod sursa (job #1177792) | Cod sursa (job #2058241) | Cod sursa (job #1860358) | Cod sursa (job #81944) | Cod sursa (job #1938159)
#include <bits/stdc++.h>
using namespace std;
#include <bits/stdc++.h>
using namespace std;
class InputReader {
public:
InputReader() {}
InputReader(const char *file_name) {
input_file = fopen(file_name, "r");
cursor = 0;
fread(buffer, SIZE, 1, input_file);
}
inline InputReader &operator >>(int &n) {
while((buffer[cursor] < '0' || buffer[cursor] > '9')&& buffer[cursor]!='-') {
advance();
}
semn=1;
if(buffer[cursor]=='-')
{
semn=-1;
advance();
}
n = 0;
while('0' <= buffer[cursor] && buffer[cursor] <= '9') {
n = n * 10 + buffer[cursor] - '0';
advance();
}
n*=semn;
return *this;
}
private:
FILE *input_file;
static const int SIZE = 1 << 20;
int cursor,semn;
char buffer[SIZE];
inline void advance() {
++ cursor;
if(cursor == SIZE) {
cursor = 0;
fread(buffer, SIZE, 1, input_file);
}
}
}f("ograzi.in");
ofstream g("ograzi.out");
int N,M,m,n,i,j,x,y,sol;
vector <pair <int,int> > O;
multiset <int> S;
struct pt
{
int x;
int y;
int Y;
}I[1<<16],E[1<<16];
bool cmp(pt a,pt b)
{
return a.x<b.x;
}
int main()
{
f>>N>>M>>n>>m;
for(i=1;i<=N;++i)
{
f>>x>>y;
++y;
I[i]={x,y,y+m};
E[i]={x+n,y,y+m};
}
for(i=1;i<=M;++i)
{
f>>x>>y;
++y;
O.push_back(make_pair(x,y));
}
sort(I+1,I+N+1,cmp);
sort(E+1,E+N+1,cmp);
sort(O.begin(),O.end());
int ins=1,ers=1,ver=0;
for(i=0;i<=1000000;++i)
{
for(;I[ins].x==i&&ins<=N;++ins)
{
S.insert(I[ins].y);
///g<<"bag :"<<I[ins].y<<'\n';
}
for(;ver<O.size();++ver)
if(O[ver].first==i)
{
multiset <int> :: iterator it=S.lower_bound(O[ver].second);
if(it!=S.end())
{
///g<<"cautat :"<<O[ver].second<<" gasit :"<<*it<<'\n';
sol+=(*it<=O[ver].second&&O[ver].second<=*it+m);
}
if(it!=S.begin()) --it;
if(it!=S.end())
{
///g<<"cautat :"<<O[ver].second<<" gasit :"<<*it<<'\n';
sol+=(*it<=O[ver].second&&O[ver].second<=*it+m);
}
}
else break;
for(;E[ers].x==i&&ers<=N;++ers)
{
S.erase(S.find(E[ers].y));
///g<<"scot :"<<E[ers].y<<'\n';
}
}
g<<sol;
return 0;
}