This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
#define ff first
#define ss second
ll ttt;
const ll INF=1e18;
const ll MOD=1e9+7;
const ll N=100007;
ll n,m,k;
int arr[2007];
struct Ship{
int ind;
int x;
int y;
int dir;
};
Ship a[N];
vector<pair<int,pair<int,int>>>p;
int dead[N];
int whenCollide(Ship b, Ship c){
if(b.dir==c.dir){
return MOD;
}
if(b.dir>c.dir){
swap(b,c);
}
if(b.dir==0){
if(c.dir==1){
int d=b.x-c.x;
if(d<=0){
return MOD;
}
int d2=b.y-c.y;
if(d==d2){
return d;
}
return MOD;
}
else if(c.dir==2){
if(b.x!=c.x){
return MOD;
}
int d=(b.y-c.y)/2;
if(d<=0){
return MOD;
}
return d;
}
else if(c.dir==3){
int d=c.x-b.x;
if(d<=0){
return MOD;
}
int d2=b.y-c.y;
if(d==d2){
return d;
}
return MOD;
}
}
else if(b.dir==1){
if(c.dir==2){
int d=c.x-b.x;
if(d<=0){
return MOD;
}
int d2=b.y-c.y;
if(d==d2){
return d;
}
return MOD;
}
else if(c.dir==3){
if(b.y!=c.y){
return MOD;
}
int d=(c.x-b.x)/2;
if(d<=0){
return MOD;
}
return d;
}
}
else if(b.dir==2){
if(c.dir==3){
int d=c.x-b.x;
if(d<=0){
return MOD;
}
int d2=c.y-b.y;
if(d==d2){
return d;
}
return MOD;
}
}
return MOD;
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
// freopen("inputA.txt","r",stdin);
// freopen("outputA.txt","w",stdout);
arr['N']=0;
arr['E']=1;
arr['S']=2;
arr['W']=3;
cin>>n;
for(int i=0;i<n;i++){
int x,y;
char c;
cin>>x>>y>>c;
a[i].x=x;
a[i].y=y;
a[i].dir=arr[c];
a[i].ind=i;
dead[i]=MOD;
}
for(int i=0;i<n;i++){
for(int j=i+1;j<n;j++){
p.push_back({whenCollide(a[i],a[j]),{i,j}});
}
}
sort(p.begin(),p.end());
for(auto x:p){
if(x.ff==MOD){
break;
}
if(dead[x.ss.ff]>=x.ff&&dead[x.ss.ss]>=x.ff){
dead[x.ss.ff]=x.ff;
dead[x.ss.ss]=x.ff;
}
}
for(int i=0;i<n;i++){
if(dead[i]==MOD){
cout<<i+1<<endl;
}
}
}
Compilation message (stderr)
Main.cpp: In function 'int main()':
Main.cpp:127:22: warning: array subscript has type 'char' [-Wchar-subscripts]
127 | a[i].dir=arr[c];
| ^
# | 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... |