Submission #306124


Source Code Expand

#include <bits/stdc++.h>
#define all(x) begin(x), end(x)
#define rall(x) (x).rbegin(),(x).rend()
#define sz(x) ((int)(x).size())
#define REP(i,b,n) for(int i=(int)(b);i<(int)(n);++i)
#define rep(i,n) REP(i,0,n)
#define repsz(i,v) rep(i,sz(v))
#define eb emplace_back
#define mt make_tuple
#define aur auto&
#define bit(n) (1LL<<(n))
using namespace std;
typedef long long ll;
//#define int long long
static const int INF = 1<<25;
static const double EPS = 1e-5;
template<class T>bool chmin(T&a,const T&b){if(a<=b)return false;a=b;return true;}
template<class T>bool chmax(T&a,const T&b){if(a>=b)return false;a=b;return true;}

inline ll h(const ll &a, const ll &b){
    return a * 432083 + b * 93029031;
}
inline ll h(const pair<ll, ll> &a){ return h(a.first, a.second); }

bool solve(){
    int n; cin >> n;
    unordered_map<ll, int> in;
    vector<pair<ll, ll>> inv;
    rep(i, n){
        ll x, y; cin >> x >> y;
        in[h(x*2, y*2)] = i+1;
        inv.emplace_back(x*2, y*2);
    }
    rep(i, n){
        rep(j, i){
            ll x = (inv[i].first + inv[j].first) / 2;
            ll y = (inv[i].second + inv[j].second) / 2;
            ll a = inv[i].first - x;
            ll b = inv[i].second - y;
            vector<int> res;
            res.emplace_back(in[h(x+a, y+b)]);
            res.emplace_back(in[h(x-b, y+a)]);
            res.emplace_back(in[h(x-a, y-b)]);
            res.emplace_back(in[h(x+b, y-a)]);
            sort(all(res));
            res.erase(unique(all(res)), res.end());
            if(res.size() < 4) continue;
            if(res[0] == 0) continue;
            cout << 4 << endl;
            rep(i, 4) cout << res[i] << endl;
            return true;
        }
    }
    cout << 0 << endl;
    return true;
}
signed main(){
    //cin.tie(0);
    //ios_base::sync_with_stdio(0);
    cout.setf(ios::fixed); cout.precision(10);
    solve();
    return 0;
}
// vim:set foldmethod=marker commentstring=//%s:

Submission Info

Submission Time
Task C - Regular Polygon
User MiSawa
Language C++11 (GCC 4.8.1)
Score 100
Code Size 2003 Byte
Status AC
Exec Time 754 ms
Memory 40240 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 100 / 100
Status
AC × 2
AC × 20
Set Name Test Cases
Sample subtask0_sample_01.txt, subtask0_sample_02.txt
All subtask0_sample_01.txt, subtask0_sample_02.txt, subtask1_random01.txt, subtask1_random02.txt, subtask1_random03.txt, subtask1_random04.txt, subtask1_random05.txt, subtask1_random06.txt, subtask1_random07.txt, subtask1_random08.txt, subtask1_special01.txt, subtask1_special02.txt, subtask1_special03.txt, subtask1_special04.txt, subtask1_special05.txt, subtask1_special06.txt, subtask1_special07.txt, subtask1_special08.txt, subtask1_special09.txt, subtask1_special10.txt
Case Name Status Exec Time Memory
subtask0_sample_01.txt AC 24 ms 800 KB
subtask0_sample_02.txt AC 30 ms 800 KB
subtask1_random01.txt AC 754 ms 40240 KB
subtask1_random02.txt AC 721 ms 40240 KB
subtask1_random03.txt AC 708 ms 39604 KB
subtask1_random04.txt AC 718 ms 39664 KB
subtask1_random05.txt AC 71 ms 4420 KB
subtask1_random06.txt AC 62 ms 4200 KB
subtask1_random07.txt AC 716 ms 39732 KB
subtask1_random08.txt AC 714 ms 39856 KB
subtask1_special01.txt AC 23 ms 924 KB
subtask1_special02.txt AC 24 ms 800 KB
subtask1_special03.txt AC 25 ms 780 KB
subtask1_special04.txt AC 23 ms 676 KB
subtask1_special05.txt AC 552 ms 40240 KB
subtask1_special06.txt AC 229 ms 15256 KB
subtask1_special07.txt AC 119 ms 8176 KB
subtask1_special08.txt AC 50 ms 2860 KB
subtask1_special09.txt AC 597 ms 40108 KB
subtask1_special10.txt AC 25 ms 800 KB