Submission #68935714


Source Code Expand

#include <bits/stdc++.h>
using namespace std;
#define int long long
struct node
{
    char x;
    int t;
};
vector<node> a,b;
int side(char s)
{
    if(s=='U'||s=='D')
        return 1;
    return -1;
}
int w(char s)
{
    if(s=='D'||s=='R')return 1;
    return -1;
}
int sgn(int x)
{
    if(x>0)return 1;
    if(x<0)return -1;
    return 0;
}
signed main() 
{
    int nx,ny,mx,my;
    cin>>nx>>ny>>mx>>my;
    int n,m,l;cin>>n>>m>>l;
    for(int i=1;i<=m;i++)
    {
        char x;int t;cin>>x>>t;
        if(i-1)t+=a.back().t;
        a.push_back((node){x,t});
    }
    for(int i=1;i<=l;i++)
    {
        char x;int t;cin>>x>>t;
        if(i-1)t+=b.back().t;
        b.push_back((node){x,t});
    }
    int t1=0,t2=0;
    int now=0;//当前时间
    int ans=0;
    while(t1<m&&t2<l)
    {
        if(side(a[t1].x)!=side(b[t2].x))
        {
            if(nx==mx||ny==my);
            else{
            int ls=side(a[t1].x)==1?-w(a[t1].x):w(b[t2].x);
            int rs=side(a[t1].x)==-1?-w(a[t1].x):w(b[t2].x);
            if(abs(nx-mx)==abs(ny-my)&&abs(nx-mx)<=(min(a[t1].t,b[t2].t)-now)&&sgn(nx-mx)==ls&&sgn(ny-my)==rs)
                ans++;
            }
        }
        else
        {
            if(w(a[t1].x)==w(b[t2].x)&&nx==mx&&ny==my)
                ans+=min(a[t1].t,b[t2].t)-now;
            else if(side(a[t1].x)==1?ny==my:nx==mx)
            {
                if(nx==mx&&ny==my);
                else if((abs(nx-mx)+abs(ny-my))%2==0&&w(a[t1].x)!=w(b[t2].x)&&(min(a[t1].t,b[t2].t)-now)*2>=(abs(nx-mx)+abs(ny-my)))
                    ans++;
            }
        }
        if(side(a[t1].x)==1)nx+=(min(a[t1].t,b[t2].t)-now)*w(a[t1].x);
        else ny+=(min(a[t1].t,b[t2].t)-now)*w(a[t1].x);
        if(side(b[t2].x)==1)mx+=(min(a[t1].t,b[t2].t)-now)*w(b[t2].x);
        else my+=(min(a[t1].t,b[t2].t)-now)*w(b[t2].x);
        now=min(a[t1].t,b[t2].t);
        if(a[t1].t<b[t2].t)t1++;
        else if(a[t1].t>b[t2].t)t2++;
        else t1++,t2++;
    }
    cout<<ans<<'\n';
    return 0;
}

Submission Info

Submission Time
Task D - RLE Moving
User anke
Language C++ 20 (gcc 12.2)
Score 0
Code Size 2092 Byte
Status WA
Exec Time 63 ms
Memory 7956 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 0 / 425
Status
AC × 4
AC × 14
WA × 10
Set Name Test Cases
Sample sample_01.txt, sample_02.txt, sample_03.txt, sample_04.txt
All random_01.txt, random_02.txt, random_03.txt, random_04.txt, random_05.txt, random_06.txt, random_07.txt, random_08.txt, random_09.txt, random_10.txt, random_11.txt, random_12.txt, random_13.txt, random_14.txt, random_15.txt, random_16.txt, random_17.txt, random_18.txt, random_19.txt, random_20.txt, sample_01.txt, sample_02.txt, sample_03.txt, sample_04.txt
Case Name Status Exec Time Memory
random_01.txt AC 63 ms 7804 KiB
random_02.txt AC 39 ms 5768 KiB
random_03.txt AC 13 ms 5260 KiB
random_04.txt AC 25 ms 5332 KiB
random_05.txt AC 12 ms 3812 KiB
random_06.txt WA 62 ms 7864 KiB
random_07.txt WA 63 ms 7876 KiB
random_08.txt WA 63 ms 7932 KiB
random_09.txt WA 60 ms 7956 KiB
random_10.txt WA 60 ms 7792 KiB
random_11.txt WA 63 ms 7864 KiB
random_12.txt WA 62 ms 7888 KiB
random_13.txt WA 63 ms 7836 KiB
random_14.txt WA 63 ms 7892 KiB
random_15.txt AC 61 ms 7860 KiB
random_16.txt AC 61 ms 7804 KiB
random_17.txt WA 63 ms 7808 KiB
random_18.txt AC 62 ms 7776 KiB
random_19.txt AC 62 ms 7928 KiB
random_20.txt AC 61 ms 7832 KiB
sample_01.txt AC 1 ms 3532 KiB
sample_02.txt AC 1 ms 3676 KiB
sample_03.txt AC 1 ms 3532 KiB
sample_04.txt AC 1 ms 3412 KiB