Submission
Status:
PPPPPPPPPP
Subtask/Task Score:
100/100
Score: 100
User: mantaggez
Problemset: ลำแสงเลเซอร์สะท้อน
Language: cpp
Time: 0.003 second
Submitted On: 2026-03-23 20:26:21
#include <bits/stdc++.h>
using namespace std;
#define pii pair<int, int>
#define f first
#define s second
const int nx = 505;
int n, m, res = 1;
vector<pii> red(nx), blue(nx);
bool cross(pii r1, pii r2, pii b1, pii b2)
{
if(r2 == b2) return true;
if(r1 == b1) return false;
if(r1.s == b1.s) {
if(b1.f < r1.f && b2.f > r2.f) return true;
if(b1.f > r1.f && b2.f < r2.f) return true;
return false;
}
else {
if(b1.f < r2.f && b2.f > r1.f) return true;
}
return false;
}
int main()
{
cin.tie(NULL)->sync_with_stdio(false);
cin >> n >> m;
for(int i=1;i<=n;i++) {
cin >> red[i].f;
red[i].second = i % 2;
}
for(int i=1;i<=m;i++) {
cin >> blue[i].f;
blue[i].second = i % 2;
}
for(int i=0;i<n;i++)
{
pii r1 = red[i], r2 = red[i + 1];
for(int j=0;j<m;j++)
{
pii b1 = blue[j], b2 = blue[j + 1];
res += (cross(r1, r2, b1, b2) ? 1 : 0);
if(b1.f > r2.f) break;
}
}
cout << res ;
return 0;
}