Submission

Status:
PPPPPPPPPP

Score: 100

User: akuyga1

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

Language: cpp

Time: 0.002 second

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

#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()){
        int t=0;
        auto currA=A.front(),currB=B.front();
        if(currA.f!=currB.f)t++;
        else if(currA.s.s==currB.s.s)t++;
        else if(currA.s.f<range.f&&currA.s.s>range.s)t++;
        else if(currB.s.f<range.f&&currB.s.s>range.s)t++;
        // cout<<range.f<<' '<<range.s<<" | "<<t<<endl;
        range.f=range.s;
        if(A.front().s.s==range.f)A.pop();
        if(B.front().s.s==range.f)B.pop();
        range.s=min(A.front().s.s,B.front().s.s);
        c+=t;
    }
    cout<<c;
}