Submission #994807

#TimeUsernameProblemLanguageResultExecution timeMemory
994807salmonPortal (BOI24_portal)C++14
1 / 100
25 ms2576 KiB
#include <bits/stdc++.h> using namespace std; int N; long long int x,y; long long int b,d; long long int b1,d1; long long int h1,h2; bool flag = true; bool floog = true; vector<pair<long long int,long long int>> v; mt19937 rng(chrono::high_resolution_clock::now().time_since_epoch().count()); pair<long long int, long long int> gbcd(pair<long long int, long long int> ii1, pair<long long int, long long int> ii2){ if(ii1.first > ii2.first) swap(ii1,ii2); if(ii1.first == ii2.first) return min(ii1,ii2); if(ii1.first == 0) return ii2; return gbcd({ii2.first % ii1.first, ii2.second - ii2.first / ii1.first * ii1.second }, ii1); } int main(){ __int128 num = 0; long long int fum = 0; scanf(" %d",&N); scanf(" %lld",&x); scanf(" %lld",&y); b = 0; d = 0; for(int i = 0; i < N - 1; i++){ scanf(" %lld",&h1); scanf(" %lld",&h2); h1 -= x; h2 -= y; if(h1 == 0 && h2 == 0) continue; flag &= (h1==0); floog &= (h2==0); if(h1 != 0 && (b == 0 && d == 0)){ h2 *= (h1)/abs(h1); h1 = abs(h1); b = h1; d = h2; } else v.push_back({h1,h2}); } if(flag || floog){ printf("%d",-1); return 0; } for(pair<long long int,long long int> ii : v){ h1 = ii.first; h2 = ii.second; if(h1 != 0){ h2 *= (h1)/abs(h1); h1 = abs(h1); long long int c = __gcd(h1,b); num = __gcd(num, (__int128)b / c * h2 - (__int128)h1 / c * d); } else{ num = __gcd(num, (__int128)h2); } fum = b; } //printf("%lld\n",num); if(fum == 0 || num == 0) printf("%d",-1); else{ printf("%lld",abs((long long int)num * fum)); } } /* 5 0 0 2 1000000 1000007 1000005 1000003 1000005 1000007 1000001 */

Compilation message (stderr)

Main.cpp: In function 'int main()':
Main.cpp:27:7: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   27 |  scanf(" %d",&N);
      |  ~~~~~^~~~~~~~~~
Main.cpp:29:7: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   29 |  scanf(" %lld",&x);
      |  ~~~~~^~~~~~~~~~~~
Main.cpp:30:7: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   30 |  scanf(" %lld",&y);
      |  ~~~~~^~~~~~~~~~~~
Main.cpp:36:8: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   36 |   scanf(" %lld",&h1);
      |   ~~~~~^~~~~~~~~~~~~
Main.cpp:37:8: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   37 |   scanf(" %lld",&h2);
      |   ~~~~~^~~~~~~~~~~~~
#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...