제출 #1113550

#제출 시각아이디문제언어결과실행 시간메모리
1113550dynam1cNaval battle (CEOI24_battle)C++17
30 / 100
473 ms9056 KiB
#include <bits/stdc++.h>
using namespace std;
int main() {
  int n;
  cin >> n;
  vector<tuple<int, int, char, int>> ships(n);
  int ii = 0;
  for (auto& [x, y, c, i] : ships)
    cin >> x >> y >> c, i = ii++;
  sort(ships.begin(), ships.end(),
    [&](tuple<int, int, char, int> a, tuple<int, int, char, int> b) {
      auto [x1, y1, c1, i1] = a;
      auto [x2, y2, c2, i2] = b;
      if (x1+y1 < x2+y2)
        return true;
      if (x1+y1 > x2+y2)
        return false;
      return x1 < x2;
    });

  int prev = 0;
  stack<int> st;
  vector<bool> sunk(n);
  for (auto& [x, y, c, i] : ships) {
    if (x+y != prev)
      st = stack<int>{};
    prev = x+y;

    if (c == 'E')
      st.push(i);
    else if (!st.empty())
      sunk[i] = true, sunk[st.top()] = true, st.pop();
  }

  for (int i = 0; i < n; i++)
    if (!sunk[i])
      cout << i+1 << endl;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...