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