卡了一整场没调对
#include<iostream>
#include<algorithm>
#include<cmath>
#define int long long
using namespace std;
int xa,ya,xb,yb;
int n,m,l;
const int mr=1e5+10;
struct node{char c;int cnt;}a[mr],b[mr];
int cura,curb;
int ab(int x)
{
return (x>0?x:-x);
}
signed main()
{
cin>>xa>>ya>>xb>>yb>>n>>m>>l;
if((xa+ya)%2!=(xb+yb)%2)
{
cout<<0<<endl;
return 0;
}
for(int i=1;i<=m;i++)cin>>a[i].c>>a[i].cnt;
for(int i=1;i<=l;i++)cin>>b[i].c>>b[i].cnt;
cura=curb=1;
int ans=0;
while(cura<=m&&curb<=l)
{
int ncnt=min(a[cura].cnt,b[curb].cnt);
int nxa=xa,nya=ya,nxb=xb,nyb=yb;
if(a[cura].c=='U')nxa-=ncnt,xa--;
if(a[cura].c=='D')nxa+=ncnt,xa++;
if(a[cura].c=='L')nya-=ncnt,ya--;
if(a[cura].c=='R')nya+=ncnt,ya++;
if(b[curb].c=='U')nxb-=ncnt,xb--;
if(b[curb].c=='D')nxb+=ncnt,xb++;
if(b[curb].c=='L')nyb-=ncnt,yb--;
if(b[curb].c=='R')nyb+=ncnt,yb++;
bool flag=1;
if(xa==xb&&ya==yb&&nxa==nxb&&nya==nyb)ans+=ncnt;
else
{
if(a[cura].c!=b[curb].c)
{
if(a[cura].c=='U'&&b[curb].c=='D'||a[cura].c=='D'&&b[curb].c=='U')
{
if(min(nxa,xa)<=max(nxb,xb)&&min(nxb,xb)<=max(nxa,xa)&&min(nya,ya)<=max(nyb,yb)&&min(nyb,yb)<=max(nya,ya)&&xa%2==xb%2)ans++;
}
else if(a[cura].c=='L'&&b[curb].c=='R'||a[cura].c=='R'&&b[curb].c=='L')
{
if(min(nxa,xa)<=max(nxb,xb)&&min(nxb,xb)<=max(nxa,xa)&&min(nya,ya)<=max(nyb,yb)&&min(nyb,yb)<=max(nya,ya)&&ya%2==yb%2)ans++;
}
else
{
if(min(nxa,xa)<=max(nxb,xb)&&min(nxb,xb)<=max(nxa,xa)&&min(nya,ya)<=max(nyb,yb)&&min(nyb,yb)<=max(nya,ya)&&ab(ya-yb)==ab(xa-xb))ans++;
}
}
}
xa=nxa,ya=nya,xb=nxb,yb=nyb;
a[cura].cnt-=ncnt,b[curb].cnt-=ncnt;
if(a[cura].cnt==0)cura++;
if(b[curb].cnt==0)curb++;
}
cout<<ans<<endl;
return 0;
}