개미가 마주치면 서로 반대로 튕겨나간다로 이해하지 말고 스쳐지나간다라고 이해하면 편하다.
그리고 삼거리의 중심에서 만나지 않는 이상 중심으로 가는 개미는 무조건 다음 길로 간다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | #include <stdio.h> #include <vector> #include <map> #include <algorithm> using namespace std; typedef long long ll; struct ant { ll x; int s, w; ant(int s = 0, ll x = 0, int w = 0) : s(s), x(x), w(w) {} }; bool cmp(const ant &a, const ant &b) { return a.x < b.x; } int n, b, cnt[3]; vector<ant> v; char t; ll l, ans, a; map<ll, int> m; int main() { scanf("%d%lld", &n, &l); for (int i = 0; i < n; i++) { scanf(" %c %lld %d", &t, &a, &b); v.push_back({ t - 'A',a,b }); if (!b) { if (!m.count(a)) m[a] = 1; else m[a]++; } ans += b ? l - a : l + a; } sort(v.begin(), v.end(), cmp); for (int i = 0; i < n; i++) { if (v[i].w) cnt[v[i].s]++; else { if (m[v[i].x] > 1) cnt[v[i].s]++; else cnt[(v[i].s + 1) % 3]++; } } printf("%lld\n%d %d %d\n", ans, cnt[0], cnt[1], cnt[2]); return 0; } | cs |
'BOJ' 카테고리의 다른 글
1198 삼각형으로 자르기 (0) | 2017.10.30 |
---|---|
2149 암호 해독 (0) | 2017.10.30 |
3159 전구 (0) | 2017.10.30 |
5619 세 번째 (0) | 2017.10.30 |
3758 KCPC (0) | 2017.10.30 |