Submission #1296839

#TimeUsernameProblemLanguageResultExecution timeMemory
1296839malmoNaval battle (CEOI24_battle)C++20
30 / 100
403 ms152264 KiB
#include <bits/stdc++.h>

using namespace std;

using pii=pair<int, int>;
using ppiipii=pair<pair<int, int>, pair<int, int>>;

vector<int> solve(int N, vector<int> X, vector<int> Y, vector<char> D){
    vector<ppiipii> navi(N);
    for(int i=0; i<N; i++) navi[i]={{X[i], Y[i]}, {D[i], i}};
    sort(navi.begin(), navi.end());
    map<int, stack<int>> diag;
    vector<bool> isAlive(N, true);
    for(int i=0; i<N; i++){
        if(navi[i].second.first=='E'){
            diag[navi[i].first.first+navi[i].first.second].push(navi[i].second.second);
        }else if(!diag[navi[i].first.first+navi[i].first.second].empty()){
            isAlive[navi[i].second.second]=false;
            isAlive[diag[navi[i].first.first+navi[i].first.second].top()]=false;
            diag[navi[i].first.first+navi[i].first.second].pop();
        }
    }
    vector<int> ans;
    for(int i=0; i<N; i++) if(isAlive[i]) ans.push_back(i+1);
    return ans;
}

int main(){
    int N;
    cin >>N;
    vector<int> X(N), Y(N);
    vector<char> D(N);
    for(int i=0; i<N; i++) cin >>X[i] >>Y[i] >>D[i];
    vector<int> ans=solve(N, X, Y, D);
    for(int i=0; i<ans.size(); i++) cout <<ans[i] <<'\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...