Submission
Status:
PPPPPPPPPP
Score: 100
User: njoop
Problemset: ลำแสงเลเซอร์สะท้อน
Language: cpp
Time: 0.003 second
Submitted On: 2024-11-26 20:31:53
#include <bits/stdc++.h>
using namespace std;
int fi[510], si[510], n, m, ans;
map<int, int> mp;
struct ray {
int start;
int end;
int state;
};
int check(ray first, ray second) {
bool mark = 0;
if(first.start == second.start && first.state == second.state) {
int in = first.start;
if(mp[in] == 0) {
mp[in]++;
return 1;
}
mark = 1;
}
if(first.end == second.end && first.state == second.state) {
int in = first.end;
if(mp[in] == 0) {
mp[in]++;
return 1;
}
mark = 1;
}
if(first.start == second.end && first.state != second.state) {
int in = first.start;
if(mp[in] == 0) {
mp[in]++;
return 1;
}
mark = 1;
}
if(first.end == second.start && first.state != second.state) {
int in = first.end;
if(mp[in] == 0) {
mp[in]++;
return 1;
}
mark = 1;
}
if(mark) {
return 0;
}
if(first.start > second.start) swap(first, second);
if(first.state == second.state) {
if(first.end > second.end) {
return 1;
}
} else {
if(second.start < first.end) {
return 1;
}
}
return 0;
}
int main() {
cin >> n >> m;
for(int i=1; i<=n; i++) {
cin >> fi[i];
}
for(int i=1; i<=m; i++) {
cin >> si[i];
}
for(int i=0; i<m; i++) {
for(int j=0; j<n; j++) {
ans += check({fi[j], fi[j+1], j%2}, {si[i], si[i+1], i%2});
}
}
cout << ans;
return 0;
}