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