Submission #1194326

#TimeUsernameProblemLanguageResultExecution timeMemory
1194326UnforgettableplPortal (BOI24_portal)C++20
11 / 100
726 ms5116 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long

int32_t main(){
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    int N;
    cin >> N;
    vector<pair<int,int>> portals(N);
    for(auto&[i,j]:portals)cin>>i>>j;
    vector<pair<int,int>> constrains(N);
    for(auto&[x1,y1]:portals){
        constrains.emplace_back(abs(portals[0].first-x1),abs(portals[0].second-y1));
    }
    auto tryFirst = [&](){
        int vertical = 0;
        int horizontal = 0;
        for(auto&[i,j]:constrains)vertical=gcd(vertical,i);
        for(auto&[i,j]:constrains)horizontal=gcd(horizontal,j);
        if(vertical==0 or horizontal==0)return true;
        for(auto&[i,j]:constrains){
            if(i/vertical!=j/horizontal)return false;
        }
        return true;
    };
    if(tryFirst()){
        cout << "-1\n";
        return 0;
    }
    auto tryShift = [&](){
        int b = 0;
        for(auto&[i,j]:constrains)b=gcd(b,j);
        int maxC = 0;
        for(int a=0;a<=100;a++){
            int currC = 0;
            for(auto&[i,j]:constrains){
                currC = gcd(currC,i-(j/b)*a);
            }
            maxC = max(maxC,currC);
        }
        return b*maxC;
    };
    int ans = tryShift();
    for(auto&[i,j]:constrains)swap(i,j);
    ans = max(ans,tryShift());
    cout << ans << '\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...