Submission #1137693

#TimeUsernameProblemLanguageResultExecution timeMemory
1137693AbdullahIshfaqNaval battle (CEOI24_battle)C++20
46 / 100
1823 ms1114112 KiB
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define MOD 1000000007
ll n, mxx = 0, mxy = 0;

vector<ll> ids, xs, ys, dxs, dys, done;
ll tim(ll i, ll j) {
    ll t = (abs(xs[j] - xs[i]) + abs(ys[j] - ys[i])) / 2;
    if (xs[j] + t * dxs[j] == xs[i] + t * dxs[i] and ys[j] + t * dys[j] == ys[i] + t * dys[i]) {
        return t;
    } else {
        return 1e9;
    }
}
bool valid(ll ind) {
    return (0 <= xs[ind] and xs[ind] <= mxx) and (0 <= ys[ind] and ys[ind] <= mxy);
}
void solve(){
	cin >> n;
    for (int i = 0; i < n; i++) {
        ll x, y;
        char d;
        cin >> x >> y >> d;
        mxx = max(mxx, x);
        mxy = max(mxy, y);
        ids.push_back(i);
		xs.push_back(x);
		ys.push_back(y);
		dxs.push_back(d == 'W' ? -1 : (d == 'E' ? 1 : 0));
		dys.push_back(d == 'N' ? -1 : (d == 'S' ? 1 : 0));
		done.push_back(1e9);
    }
    vector<tuple<ll, ll, ll>> happ;
    for (int i = 0; i < n; i++) {
        for (int j = i + 1; j < n; j++) {
            ll tt = tim(i, j);
            if (tt < 1e9) {
                happ.emplace_back(tt, i, j);
            }
        }
    }
    sort(happ.begin(), happ.end());
    for (auto [time, i, j] : happ) {
        if (done[i] < time or done[j] < time)
            continue;
        done[i] = done[j] = time;
    }
    for (int i = 0; i < n; i++) {
        if (done[i] == 1e9) {
            cout << ids[i] + 1 << '\n';
        }
    }
}
int main() {
	ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	int tests = 1;
	// cin >> tests;
	for (int i = 1; i <= tests; i++) {
		solve();
	}
}
#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...