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;
}