#include<bits/stdc++.h>
#define debug(x) cerr << #x << " " << x << "\n"
#define debugs(x) cerr << #x << " " << x << " "
#pragma GCC optimize("Ofast")
#define int long long
using namespace std;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
int range_rng(int l, int r)
{
return uniform_int_distribution<int>(l,r)(rng);
}
struct nava
{
int x;
int y;
char dir;
};
struct ceva
{
int x;
int y;
int id;
};
bool cmp(ceva a, ceva b)
{
return a.y<b.y;
}
nava ship[200005];
bool sunk[200005];
set<pair<int,int>> st[200005];
map<int,int> normie;
map<pair<int,int>,int> id;
vector<int> vals;
vector<ceva> v;
signed main()
{
/*
ifstream fin("arbore.in");
ofstream fout("arbore.out");
*/
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n,i,j,rez,when,cnt,diag,ide;
cin >> n;
for (i=1; i<=n; i++)
{
cin >> ship[i].x >> ship[i].y >> ship[i].dir;
swap(ship[i].x,ship[i].y);
id[ {ship[i].x,ship[i].y}]=i;
vals.push_back(ship[i].x+ship[i].y);
}
sort(vals.begin(),vals.end());
cnt=0;
for (i=0; i<vals.size(); i++)
{
if (i==0 || vals[i]!=vals[i-1])
cnt++;
normie[vals[i]]=cnt;
}
for (i=1; i<=n; i++)
{
diag=normie[ship[i].x+ship[i].y];
if (ship[i].dir=='E')
st[diag].insert({ship[i].x,ship[i].y});
if (ship[i].dir=='S')
v.push_back({ship[i].x,ship[i].y,i});
}
sort(v.begin(),v.end(),cmp);
for (auto x : v)
{
diag=normie[x.x+x.y];
if (!st[diag].empty())
{
auto test=st[diag].upper_bound({x.x,x.y});
if (test!=st[diag].end())
{
ide=id[{(*test).first,(*test).second}];
sunk[x.id]=1;
sunk[ide]=1;
st[diag].erase(test);
}
}
}
for (i=1;i<=n;i++)
{
if (!sunk[i])
cout << i << "\n";
}
return 0;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |