結果

問題 No.846 メダル
ユーザー LayCurseLayCurse
提出日時 2019-07-05 23:11:24
言語 C++17
(gcc 12.3.0 + boost 1.83.0)
結果
AC  
実行時間 2 ms / 2,000 ms
コード長 3,138 bytes
コンパイル時間 2,262 ms
コンパイル使用メモリ 201,036 KB
実行使用メモリ 5,248 KB
最終ジャッジ日時 2024-10-06 23:01:01
合計ジャッジ時間 2,725 ms
ジャッジサーバーID
(参考情報)
judge2 / judge4
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 2 ms
5,248 KB
testcase_01 AC 2 ms
5,248 KB
testcase_02 AC 2 ms
5,248 KB
testcase_03 AC 2 ms
5,248 KB
testcase_04 AC 2 ms
5,248 KB
testcase_05 AC 2 ms
5,248 KB
testcase_06 AC 2 ms
5,248 KB
testcase_07 AC 2 ms
5,248 KB
testcase_08 AC 2 ms
5,248 KB
testcase_09 AC 2 ms
5,248 KB
testcase_10 AC 2 ms
5,248 KB
testcase_11 AC 2 ms
5,248 KB
testcase_12 AC 2 ms
5,248 KB
testcase_13 AC 2 ms
5,248 KB
testcase_14 AC 2 ms
5,248 KB
testcase_15 AC 2 ms
5,248 KB
testcase_16 AC 2 ms
5,248 KB
testcase_17 AC 2 ms
5,248 KB
testcase_18 AC 2 ms
5,248 KB
testcase_19 AC 2 ms
5,248 KB
testcase_20 AC 2 ms
5,248 KB
testcase_21 AC 2 ms
5,248 KB
testcase_22 AC 2 ms
5,248 KB
testcase_23 AC 2 ms
5,248 KB
testcase_24 AC 2 ms
5,248 KB
testcase_25 AC 2 ms
5,248 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

#include<bits/stdc++.h>
using namespace std;
inline void rd(long long &x){
  int k, m=0;
  x=0;
  for(;;){
    k = getchar_unlocked();
    if(k=='-'){
      m=1;
      break;
    }
    if('0'<=k&&k<='9'){
      x=k-'0';
      break;
    }
  }
  for(;;){
    k = getchar_unlocked();
    if(k<'0'||k>'9'){
      break;
    }
    x=x*10+k-'0';
  }
  if(m){
    x=-x;
  }
}
inline void wt_L(char a){
  putchar_unlocked(a);
}
inline void wt_L(int x){
  char f[10];
  int m=0, s=0;
  if(x<0){
    m=1;
    x=-x;
  }
  while(x){
    f[s++]=x%10;
    x/=10;
  }
  if(!s){
    f[s++]=0;
  }
  if(m){
    putchar_unlocked('-');
  }
  while(s--){
    putchar_unlocked(f[s]+'0');
  }
}
inline void wt_L(long long x){
  char f[20];
  int m=0, s=0;
  if(x<0){
    m=1;
    x=-x;
  }
  while(x){
    f[s++]=x%10;
    x/=10;
  }
  if(!s){
    f[s++]=0;
  }
  if(m){
    putchar_unlocked('-');
  }
  while(s--){
    putchar_unlocked(f[s]+'0');
  }
}
template<class S, class T> inline S divup_L(S a, T b){
  return (a+b-1)/b;
}
long long P;
long long Q;
long long R;
long long A;
long long B;
long long C;
int main(){
  int ok;
  long long KL2GvlyY, Lj4PdHRW, Q5VJL1cS, RZTsC2BF, cTE1_r3A, e98WHCEY, i, j, k, x, y;
  rd(P);
  rd(Q);
  rd(R);
  rd(A);
  rd(B);
  rd(C);
  Lj4PdHRW = 0;
  KL2GvlyY = 1000000000000000000LL;
  while(Lj4PdHRW < KL2GvlyY){
    if((Lj4PdHRW + KL2GvlyY)%2==0){
      Q5VJL1cS = (Lj4PdHRW + KL2GvlyY) / 2;
    }
    else{
      Q5VJL1cS = (Lj4PdHRW + KL2GvlyY - 1) / 2;
    }
    i =divup_L(Q5VJL1cS,P);
    j =divup_L(Q5VJL1cS,Q);
    k =divup_L(Q5VJL1cS,R);
    k -= j;
    j -= i;
    ok = 0;
    if(A < i || (A==i && B < j) || (A==i && B==j && C <= k)){
      ok = 1;
    }
    if(ok){
      KL2GvlyY = Q5VJL1cS;
    }
    else{
      Lj4PdHRW = Q5VJL1cS + 1;
    }
  }
  x =KL2GvlyY;
  e98WHCEY = 0;
  cTE1_r3A = 1000000000000000000LL;
  while(e98WHCEY < cTE1_r3A){
    if((e98WHCEY + cTE1_r3A)%2==0){
      RZTsC2BF = (e98WHCEY + cTE1_r3A) / 2;
    }
    else{
      RZTsC2BF = (e98WHCEY + cTE1_r3A + 1) / 2;
    }
    i =divup_L(RZTsC2BF,P);
    j =divup_L(RZTsC2BF,Q);
    k =divup_L(RZTsC2BF,R);
    k -= j;
    j -= i;
    ok = 0;
    if(A > i || (A==i && B > j) || (A==i && B==j && C >= k)){
      ok = 1;
    }
    if(ok){
      e98WHCEY = RZTsC2BF;
    }
    else{
      cTE1_r3A = RZTsC2BF - 1;
    }
  }
  y =cTE1_r3A;
  if(x > y){
    wt_L(-1);
    wt_L('\n');
    return 0;
  }
  wt_L(x);
  wt_L(' ');
  wt_L(y);
  wt_L('\n');
  return 0;
}
// cLay varsion 20190630-1

// --- original code ---
// ll P, Q, R, A, B, C;
// {
//   ll i, j, k;
//   ll x, y;
//   int ok;
// 
//   rd(P,Q,R,A,B,C);
// 
//   x = bsearch_min[ll,N,0,1d18][
//     i = N /+ P;
//     j = N /+ Q;
//     k = N /+ R;
//     k -= j;
//     j -= i;
// 
//     ok = 0;
//     if(A < i || (A==i && B < j) || (A==i && B==j && C <= k)) ok = 1;
//   ](ok);
// 
//   y = bsearch_max[ll,N,0,1d18][
//     i = N /+ P;
//     j = N /+ Q;
//     k = N /+ R;
//     k -= j;
//     j -= i;
// 
//     ok = 0;
//     if(A > i || (A==i && B > j) || (A==i && B==j && C >= k)) ok = 1;
//   ](ok);
// 
//   if(x > y){ wt(-1); return 0; }
// 
//   wt(x,y);
// }
0