Submission #991404

#TimeUsernameProblemLanguageResultExecution timeMemory
991404AndreyPortal (BOI24_portal)C++14
21 / 100
22 ms5644 KiB
#include<bits/stdc++.h>
using namespace std;

long long gcd(long long a, long long b) {
    if(b < 0) {
        b = abs(b);
    }
    if(a < 0) {
        a = abs(a);
    }
    if(b == 0) {
        return a;
    }
    return gcd(b,a%b);
}

long long lcm(long long a, long long b) {
    a = abs(a);
    b = abs(b);
    return (a/gcd(a,b))*b;
}

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    long long n,a,b,ans = 0,x = 0;
    cin >> n;
    vector<pair<long long,long long>> haha(n);
    for(long long i = 0; i < n; i++) {
        cin >> a >> b;
        haha[i] = {a,b};
    }
    vector<pair<long long,long long>> yay(0);
    for(long long i = 1; i < n; i++) {
        yay.push_back({haha[i].first-haha[0].first,haha[i].second-haha[0].second});
    }
    for(long long i = 0; i < yay.size(); i++) {
        x = gcd(x,yay[i].second);
        int j = i+1;
        if(j >= yay.size()) {
            break;
        }
        if(yay[i].second == 0) {
            ans = gcd(ans,yay[i].first);
        }
        else if(yay[j].second == 0) {
            ans = gcd(ans,yay[j].first);
        }
        else {
            long long a = yay[i].first,b = -yay[i].second,c = yay[j].first,d = -yay[j].second;
            ans = gcd(ans,a*(lcm(b,d)/b)-c*(lcm(b,d)/d));
        }
    }
    if(ans*x == 0) {
        cout << -1;
    }
    else {
        cout << abs(ans*x);
    }
    return 0;
}

Compilation message (stderr)

Main.cpp: In function 'int main()':
Main.cpp:39:28: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   39 |     for(long long i = 0; i < yay.size(); i++) {
      |                          ~~^~~~~~~~~~~~
Main.cpp:42:14: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   42 |         if(j >= yay.size()) {
      |            ~~^~~~~~~~~~~~~
#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...