結果
| 問題 |
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言語の場合は開発者のデバッグのため、公開されます。
ただし、clay言語の場合は開発者のデバッグのため、公開されます。
コンパイルメッセージ
コンパイルが30秒の制限時間を超えました
ソースコード
#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;
}
umezo