結果

問題 No.2355 Unhappy Back Dance
ユーザー umezo
提出日時 2023-06-16 22:41:13
言語 C++17(gcc12)
(gcc 12.3.0 + boost 1.87.0)
結果
CE  
(最新)
AC  
(最初)
実行時間 -
コード長 1,843 bytes
コンパイル時間 30,221 ms
コンパイル使用メモリ 6,948 KB
最終ジャッジ日時 2025-02-14 06:47:28
ジャッジサーバーID
(参考情報)
judge2 / judge4
このコードへのチャレンジ
(要ログイン)
コンパイルエラー時のメッセージ・ソースコードは、提出者また管理者しか表示できないようにしております。(リジャッジ後のコンパイルエラーは公開されます)
ただし、clay言語の場合は開発者のデバッグのため、公開されます。

コンパイルメッセージ
コンパイルが30秒の制限時間を超えました

ソースコード

diff #
プレゼンテーションモードにする

#define rep(i,n) for(int i=0;i<(int)(n);i++)
#define ALL(v) v.begin(),v.end()
#include <boost/multiprecision/cpp_dec_float.hpp>
#include <boost/multiprecision/cpp_int.hpp>
namespace mp = boost::multiprecision;
using ll = mp::cpp_int;
#include<bits/stdc++.h>
using namespace std;
int main(){
ios::sync_with_stdio(false);
std::cin.tie(nullptr);
int n;
cin>>n;
vector<ll> X(n),Y(n);
rep(i,n) cin>>X[i]>>Y[i];
vector<pair<ll,ll>> P(n);
rep(i,n) P[i]={X[i],Y[i]};
sort(ALL(P));
map<ll,set<int>> m1,m2;
rep(i,n){
m1[X[i]].insert(i);
m2[Y[i]].insert(i);
}
set<int> ANS;
for(auto [a,b]:m1){
if(b.size()>3){
for(auto x:b) ANS.insert(x);
}
else if(b.size()==3){
vector<int> T;
for(auto x:b) T.push_back(x);
ANS.insert(T[0]);
ANS.insert(T[2]);
}
}
for(auto [a,b]:m2){
if(b.size()>3){
for(auto x:b) ANS.insert(x);
}
else if(b.size()==3){
vector<int> T;
for(auto x:b) T.push_back(x);
ANS.insert(T[0]);
ANS.insert(T[2]);
}
}
map<pair<pair<ll,ll>,pair<ll,ll>>,set<int>> m3;
for(int i=0;i<n;i++){
ll xi=P[i].first,yi=P[i].second;
for(int j=i+1;j<n;j++){
ll xj=P[j].first,yj=P[j].second;
if(xi==xj || yi==yj) continue;
ll dx=xi-xj,dy=yi-yj;
if(dx<0) dx=-dx,dy=-dy;
ll g=gcd(dx,dy);
dx/=g,dy/=g;
ll da=xi*yj-xj*yi,db=xi-xj;
if(db<0) da=-da,db=-db;
ll gg=gcd(da,db);
da/=gg,db/=gg;
m3[{{dx,dy},{da,db}}].insert(i);
m3[{{dx,dy},{da,db}}].insert(j);
}
}
for(auto [a,b]:m3){
if(b.size()>3){
for(auto x:b) ANS.insert(x);
}
else if(b.size()==3){
vector<int> T;
for(auto x:b) T.push_back(x);
ANS.insert(T[0]);
ANS.insert(T[2]);
}
}
cout<<ANS.size()<<endl;
return 0;
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0