제출 #1227159

#제출 시각아이디문제언어결과실행 시간메모리
1227159MalixNaval battle (CEOI24_battle)C++20
6 / 100
3115 ms800260 KiB
#include <bits/stdc++.h>
using namespace std;
 
typedef long long ll;
typedef vector<int> vi;
typedef vector<vi> vii;
typedef pair<int,int> pi;
typedef vector<pi> pii;
typedef tuple<int,int,int> ti;
typedef vector<ll> li;
typedef vector<li> lii;
 
#define REP(i,a,b) for(int i=a;i<b;i++)
#define F first
#define S second
#define PB push_back
#define LSOne(s) ((s)&(-s))
#define all(x) (x).begin(),(x).end()
 
ll INF=1000000000000000010;
int inf=1e9+10;
ll M=1e9+7;

//0-N, 1-S, 2-E, 3-W

int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
   int n;cin>>n;
   vii a(n,vi(3,0));
   REP(i,0,n){
    int x,y;cin>>x>>y;
    char z;cin>>z;
    swap(x,y);
    a[i][0]=x;
    a[i][1]=y;
    if(z=='S')a[i][2]=1;
    else if(z=='E')a[i][2]=2;
    else if(z=='W')a[i][2]=3;
   }
   priority_queue<ti,vector<ti>,greater<ti>> pq;
   vi b(n,0);
   REP(i,0,n)REP(j,i+1,n)if(i!=j){
    int x=i,y=j;
    if(a[x][2]>a[y][2])swap(x,y);
    if(a[x][2]==0){
        if(a[y][2]==1&&a[x][1]==a[y][1])pq.push({abs(a[x][0]-a[y][0])/2,x,y});
        if(a[y][2]==2&&abs(a[x][1]-a[y][1])==abs(a[x][0]-a[y][0])&&a[x][0]>a[y][0]&&a[x][1]>a[y][1])pq.push({abs(a[x][0]-a[y][0]),x,y});
        if(a[y][2]==3&&abs(a[x][1]-a[y][1])==abs(a[x][0]-a[y][0])&&a[x][0]>a[y][0]&&a[x][1]<a[y][1])pq.push({abs(a[x][0]-a[y][0]),x,y});
    }
    else if(a[x][2]==1){
        if(a[y][2]==2&&abs(a[x][1]-a[y][1])==abs(a[x][0]-a[y][0])&&a[x][0]<a[y][0]&&a[x][1]>a[y][1])pq.push({abs(a[x][0]-a[y][0]),x,y});
        if(a[y][2]==3&&abs(a[x][1]-a[y][1])==abs(a[x][0]-a[y][0])&&a[x][0]<a[y][0]&&a[x][1]<a[y][1])pq.push({abs(a[x][0]-a[y][0]),x,y});
    }
    else if(a[x][2]==2){
        if(a[y][2]==3&&a[x][0]==a[y][0])pq.push({abs(a[x][1]-a[y][1])/2,x,y});
    }
   }
   int lst=0;
   while(!pq.empty()){
    auto [z,x,y]=pq.top();
    pq.pop();
    if(lst!=z&&(b[x]||b[y]))continue;
    b[x]=1;b[y]=1;
    lst=z;
   }
   REP(i,0,n)if(!b[i])cout<<i+1<<"\n";
}
#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...