Submission #1211937

#TimeUsernameProblemLanguageResultExecution timeMemory
1211937yanbNaval battle (CEOI24_battle)C++20
30 / 100
156 ms31472 KiB
#include <bits/stdc++.h>
 
#define int long long
 
using namespace std;
 
using pii = pair<int, int>;
using t3i = tuple<int, int, int>;

struct Ship {
    int x, y, dx, dy;
    char dir;
    bool ok;

    Ship(int x, int y, char dir) : x(x), y(y), dir(dir), ok(1) {
        switch (dir) {
            case 'N': dx = 0, dy = -1; break;
            case 'E': dx = 1, dy = 0; break;
            case 'W': dx = -1, dy = 0; break;
            case 'S': dx = 0, dy = 1; break;
        }
    }
};

signed main() {
    ios_base::sync_with_stdio(0); cin.tie(0);
    
    int n;
    cin >> n;
    vector<Ship> a;
    map<int, vector<pii>> mp;
    for (int i = 0; i < n; i++) {
        int x, y;
        char dir;
        cin >> x >> y >> dir;
        a.emplace_back(x, y, dir);
        mp[x + y].emplace_back(x, i);
    }

    for (auto [_, v] : mp) {
        sort(v.begin(), v.end());
        stack<int> st;
        for (auto [_, i] : v) {
            if (a[i].dir == 'E') {
                st.push(i);
            } else {
                if (!st.empty()) {
                    a[i].ok = 0;
                    a[st.top()].ok = 0;
                    st.pop();
                }
            }
        }
    }

    for (int i = 0; i < n; i++) {
        if (a[i].ok) {
            cout << i + 1 << "\n";
        }
    }
}
#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...