제출 #1137537

#제출 시각아이디문제언어결과실행 시간메모리
1137537SyedSohaib_123Naval battle (CEOI24_battle)C++20
0 / 100
3104 ms240328 KiB
#include <bits/stdc++.h>

using namespace std;

#define append push_back
#define int long long

const int N=2e5+10,LG=20;
int mod=1e9+7;

void solve(int tst) {
    int n;cin>>n;
    vector<vector<int>>v(n+1);
    for(int i=1;i<=n;i++){
        int a,b;
        cin>>a>>b;
        char c;
        cin>>c;
        v[i]={a,b,(c=='E')+(c=='S')*2+(c=='W')*3};
    }
    map<int,map<int,int>>mp;
    vector<int>g(n+1,1);
    g[0]=0;
    for(int _=0;_<=1e5;_++){
        vector<int>isd(n,0);
        isd[0]=0;
        for(int i=1;i<=n;i++){
            if(!g[i]) continue;
            int a=v[i][0]-(v[i][2]==3)+(v[i][2]==1),b=v[i][1]-(v[i][2]==0)+(v[i][2]==2);
            if(mp[v[i][0]][v[i][1]]==i and g[i]) mp[v[i][0]][v[i][1]]=0;
            v[i][0]=a;
            v[i][1]=b;
            int x=mp[a][b];
            if(x and (g[x] or isd[x])){
                g[x]=g[i]=0;
                isd[i]=isd[x]=1;
            }
            if(g[i]) mp[a][b]=i;
        }
    }
    for(int i=1;i<=n;i++){
        if(g[i]) cout<<i<<endl;
    }
}

signed main() {
    ios::sync_with_stdio(0);
    cin.tie(0);cout.tie(0);
    int t = 1;
    // cin >> t;
    for (int i = 0; i < t; i++) {
        solve(i);
    }
}
#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...