Submission
Status:
----------
Score: 0
User: mydKN
Problemset: ลำแสงเลเซอร์สะท้อน
Language: cpp
Time: 0.003 second
Submitted On: 2024-12-04 23:19:04
#include<bits/stdc++.h>
using namespace std;
const int maxn = 510;
int n, m;
int red[maxn], blue[maxn];
int ir, ib;
int cnt = 0;
int main(){
ios_base::sync_with_stdio(0);cin.tie(0);
cin >> n >> m;
for(int i=1;i<=n;++i){
cin >> red[i];
}
for(int i=1;i<=m;++i){
cin >> blue[i];
}
while(ir <= n && ib <= m){
if(ir+1 > n){
if(red[ir] == blue[ib+1]) ++cnt;
++ib;
continue;
}
else if(ib+1 > m){
if(red[ir+1] == blue[ib]) ++cnt;
++ir;
continue;
}
if(ir%2 == ib%2){
if(red[ir] == blue[ib]){
++cnt;
if(red[ir+1] > blue[ib+1]) ++ib;
else ++ir;
}
else if(red[ir] < blue[ib]){
if(red[ir+1] > blue[ib+1]){
++cnt;
}
if(red[ir+1] < blue[ib+2]) ++ir;
else ++ib;
}
else{
if(blue[ib+1] > red[ir+1]){
++cnt;
}
if(blue[ib+1] < red[ir+2]) ++ib;
else ++ir;
}
}
else{
if(red[ir] == blue[ib]){
++cnt;
if(red[ir+1] > blue[ib+1]) ++ib;
else ++ir;
}
else if(red[ir] < blue[ib] && red[ir+1] > blue[ib]){
++cnt;
if(red[ir+1] < blue[ib+1]) ++ir;
else ++ib;
}
else if(red[ir] > blue[ib] && blue[ib+1] > red[ir]){
++cnt;
if(blue[ib+1] < red[ir+1]) ++ib;
else ++ ir;
}
else{
if(red[ir] < blue[ib] && red[ir+1] <= blue[ib]){
++ir;
}
else{
++ib;
}
}
}
}
cout << cnt;
}