Submission

Status:
----------

Score: 0

User: akuyga1

Problemset: ลำแสงเลเซอร์สะท้อน

Language: cpp

Time: 0.002 second

Submitted On: 2025-02-25 14:10:11

#include "bits/stdc++.h"
using namespace std;
#define ii pair<int,int>
#define f first
#define s second
#define mp make_pair
int main(){
    ios_base::sync_with_stdio(false); 
    cin.tie(NULL); 
    int N,M;
    cin>>N>>M;
    queue<pair<int,ii>> A;
    int x;
    cin>>x;
    A.push(mp(0,mp(0,x)));
    //0 is down 1 is up
    for(int i=1;i<N;i++){
        cin>>x;
        int curr=0;
        auto prev=A.back();
        if(prev.f==0)curr=1;
        A.push(mp(curr,mp(prev.s.s,x)));
    }
    queue<pair<int,ii>> B;
    cin>>x;
    B.push(mp(0,mp(0,x)));
    for(int i=1;i<M;i++){
        cin>>x;
        int curr=0;
        auto prev=B.back();
        if(prev.f==0)curr=1;
        B.push(mp(curr,mp(prev.s.s,x)));
    }
    int c=1;
    ii range=mp(0,min(A.front().s.s,B.front().s.s));
    while(!A.empty()&&!B.empty()){
        auto currA=A.front(),currB=B.front();
        if(currA.f!=currB.f)c++;
        else if(currA.s.s==currB.s.s)c++;
        range.f=range.s;
        A.front().s.f=range.f;
        if(A.front().s.f==A.front().s.s)A.pop();
        B.front().s.f=range.f;
        if(B.front().s.f==B.front().s.s)B.pop();
        range.s=min(A.front().s.s,B.front().s.s);
    }
    cout<<c;
}