Submission #1213478

#TimeUsernameProblemLanguageResultExecution timeMemory
1213478spetrNaval battle (CEOI24_battle)C++20
6 / 100
1111 ms1114112 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long const ll mmod = 998244353; #define vl vector<long long> #define vll vector<vector<long long>> ll pow(ll x, ll n, ll mod){ if (n == 0){ return 1; } ll half = pow(x, n / 2, mod); ll half_square = (half * half) % mod; if (n % 2 == 0) { return half_square; } else { return (half_square * x) % mod; } } ll inversion_x(ll x, ll m){ ll vysledek = pow(x,m-2); return vysledek; } int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); ll N; cin >> N; vll e,w,n,s; vector<bool> ans; for (ll i = 0; i < N; i++){ ll x,y; char z; cin >> x >> y >> z; if (z == 'W'){ w.push_back({x,y,i}); } if (z == 'E'){ e.push_back({x,y,i}); } if (z == 'S'){ s.push_back({x,y,i}); } if (z == 'N'){ n.push_back({x,y,i}); } ans.push_back(true); } vll kolize; for (ll i = 0; i < n.size(); i++){ for (ll j = 0; j < w.size(); j++){ if (n[i][0] - w[j][0] == w[j][1] - n[i][1] && w[j][1] - n[i][1] < 0){ kolize.push_back({abs(n[i][0] - w[j][0]), w[j][2], n[i][2]}); } } for (ll j = 0; j < e.size(); j++){ if (e[j][0] - n[i][0] == e[j][1] - n[i][1] && e[j][1] - n[i][1] < 0){ kolize.push_back({abs(e[j][0] - n[i][0]), e[j][2], n[i][2]}); } } } for (ll i = 0; i < s.size(); i++){ for (ll j = 0; j < w.size(); j++){ if (s[i][0] - w[j][0] == s[i][1] - w[j][1] && s[i][1] - w[j][1] < 0){ kolize.push_back({abs(s[i][0] - w[j][0]), w[j][2], s[i][2]}); } } for (ll j = 0; j < e.size(); j++){ if ((e[j][0] - s[i][0]) == (s[i][1] - e[j][1]) && s[i][1] - e[j][1] < 0){ kolize.push_back({abs(e[j][0] - s[i][0]), e[j][2], s[i][2]}); } } } for (ll i = 0; i < n.size(); i++){ for (ll j = 0; j < s.size(); j++){ if (n[i][0] == s[j][0] && n[i][1] > s[j][1]){ kolize.push_back({abs(n[i][1] - s[j][1])/2, n[i][2], s[j][2]}); } } } for (ll i = 0; i < e.size(); i++){ for (ll j = 0; j < w.size(); j++){ if (e[i][1] == w[j][1] && w[j][1] > e[i][1]){ kolize.push_back({abs(w[j][1] - e[i][1])/2, e[i][2], w[j][2]}); } } } sort(kolize.begin(), kolize.end()); set<ll> mnozina; ll cas; for (ll i = 0; i < kolize.size(); i+=0){ cas = kolize[i][0]; while (i < kolize.size() && kolize[i][0] == cas){ if (ans[kolize[i][1]] == true && ans[kolize[i][2]] == true){ mnozina.insert(kolize[i][1]); mnozina.insert(kolize[i][2]); } i++; } for (ll prvek : mnozina){ ans[prvek] = false; } mnozina.clear(); } for (ll i = 0; i<N; i++){ if (ans[i] == true){ cout << i+1 << "\n"; } } return 0; }
#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...