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