提出 #58480067


ソースコード 拡げる

//yukicoder@cpp17

#include <iostream>
#include <iomanip>

#include <algorithm>

#include <cmath>
#include <cctype>
#include <climits>
#include <cassert>

#include <string>
#include <vector>
#include <set>
#include <stack>
#include <queue>
#include <map>

#include <random>

#include <bitset>

#include <complex>

#include <utility>

#include <numeric>

#include <functional>


using namespace std;
using ll = long long;
using P = pair<ll,ll>;


const ll MOD = 998244353;
const ll MODx = 1000000007;
const int INF = (1<<30)-1;
const ll LINF = (1LL<<62LL)-1;
const double EPS = (1e-10);


P ar4[4] = {{0,1},{0,-1},{1,0},{-1,0}};
P ar8[8] = {{-1,-1},{-1,0},{-1,1},{0,-1},{0,1},{1,-1},{1,0},{1,1}};


template <typename T> vector<T> make_vector(size_t a, T b) { return vector<T>(a, b); }
template <typename... Ts> auto make_vector(size_t a, Ts... ts) { return vector<decltype(make_vector(ts...))>(a, make_vector(ts...)); }
 
/*
確認ポイント
cout << fixed << setprecision(n) << 小数計算//n桁の小数表記になる

計算量は変わらないが楽できるシリーズ
min(max)_element(iter,iter)で一番小さい(大きい)値のポインタが帰ってくる
count(iter,iter,int)でintがiterからiterの間にいくつあったかを取得できる
*/

/* comment outed because can cause bugs
__attribute__((constructor))
void initial() {
  cin.tie(0);
  ios::sync_with_stdio(false);
}
*/

struct d{
  long long a,p,b,q;
};

// to over c with A, what is min cost?
long long nf(d A, long long c){
  long long a = A.a, b = A.b, p = A.p, q = A.q;
  long long ans = min((c+a-1)/a * p, (c+b-1)/b*q);
  for(int i = 0; (c+a-1)/a >= i; i++){
    ans = min(ans, (i*p + max(0LL,(c-a*i+b-1))/b*q));
  }
  return ans;
}

//29 5935177 2 487903 355232213
//72702279986499 72702278930352
long long f(d A, long long c){
  long long a = A.a, b = A.b, p = A.p, q = A.q;
  long long ans = min((c+a-1)/a * p, (c+b-1)/b*q);
  if(c/a < b){
    for(long long i = 0; (c+a-1)/a >= i; i++){ // i = len(S)
      if((c-a*i+b-1) < 0)break;
      ans = min(ans, (i*p + (c-a*i+b-1)/b*q));
    }
  }else{
    for(long long i = 0; b >= i; i++){
      if((c-a*i+b-1) < 0)break;
      ans = min(ans, (i*p + (c-a*i+b-1)/b*q));
    }
  }
  if(c/b < a){
    for(long long i = 0; (c+b-1)/b >= i; i++){ // i = len(S)
      if((c-b*i+a-1) < 0)break;
      ans = min(ans, (i*q + (c-b*i+a-1)/a*p));
    }
  }else{
    for(long long i = 0; a >= i; i++){
      if((c-b*i+a-1) < 0)break;
      ans = min(ans, (i*q + (c-b*i+a-1)/a*p));
    }
  }
  //cout << c << ":" << ans << endl;
  return ans;
}

void test(){
  random_device seed;
  mt19937 engine(seed());
  uniform_int_distribution<int> A(1, 100);
  uniform_int_distribution<int> B(1, 100);
  uniform_int_distribution<int> P(1, 10000000);
  uniform_int_distribution<int> Q(1, 10000000);
  uniform_int_distribution<int> C(1, 1000000000);
  int count = 0;
  while(true){
    int a = A(engine);
    int b = B(engine);
    int p = P(engine);
    int q = Q(engine);
    int c = C(engine);
    if(f({a,p,b,q},c) != nf({a,p,b,q},c)){
      cout << "ng" << endl;
      cout << a << " " << p << " " << b << " " << q << " " << c << endl;
      cout << f({a,p,b,q},c) << " " << nf({a,p,b,q},c) << endl;
      return;
    }else{
      cout << "ok" << count++ << endl;
      cout << a << " " << p << " " << b << " " << q << " " << c << endl;
      cout << f({a,p,b,q},c) << " " << nf({a,p,b,q},c) << endl;
    }
  }

}

int main(){
  //cout << f({29, 5935177, 2, 487903}, 355232213) << " " << nf({29, 5935177, 2, 487903}, 355232213) << endl;
  //return 0;
  //test();
  //return 0;
  int n,x;cin>>n>>x;
  vector<d> A(n);
  for(int i = 0; n > i; i++){
    cin>>A[i].a>>A[i].p>>A[i].b>>A[i].q;
  }
  long long mn = 0;
  long long mx = 1000001000;
  while(mx-mn > 1){
    long long ce = (mn+mx)/2;
    long long cost = 0;
    for(int i = 0; n > i; i++){
      cost += f(A[i], ce);
    }
    if(cost > x){
      mx = ce;
    }else{
      mn = ce;
    }
  }
  cout << mn << endl;
  return 0;
}

提出情報

提出日時
問題 E - Sensor Optimization Dilemma 2
ユーザ CleyL
言語 C++ 20 (gcc 12.2)
得点 475
コード長 4171 Byte
結果 AC
実行時間 3 ms
メモリ 3680 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 475 / 475
結果
AC × 4
AC × 98
セット名 テストケース
Sample sample_01.txt, sample_02.txt, sample_03.txt, sample_04.txt
All hand_01.txt, hand_02.txt, hand_03.txt, hand_04.txt, hand_05.txt, killer_01.txt, killer_02.txt, killer_03.txt, killer_04.txt, killer_05.txt, killer_06.txt, killer_07.txt, killer_08.txt, killer_09.txt, killer_10.txt, killer_11.txt, killer_12.txt, killer_13.txt, killer_14.txt, killer_15.txt, killer_16.txt, killer_17.txt, killer_18.txt, killer_19.txt, killer_20.txt, killer_21.txt, killer_22.txt, killer_23.txt, killer_24.txt, killer_25.txt, killer_26.txt, killer_27.txt, killer_28.txt, killer_29.txt, killer_30.txt, sample_01.txt, sample_02.txt, sample_03.txt, sample_04.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt, test_21.txt, test_22.txt, test_23.txt, test_24.txt, test_25.txt, test_26.txt, test_27.txt, test_28.txt, test_29.txt, test_30.txt, test_31.txt, test_32.txt, test_33.txt, test_34.txt, test_35.txt, test_36.txt, test_37.txt, test_38.txt, test_39.txt, test_40.txt, test_41.txt, test_42.txt, test_43.txt, test_44.txt, test_45.txt, test_46.txt, test_47.txt, test_48.txt, test_49.txt, test_50.txt, test_51.txt, test_52.txt, test_53.txt, test_54.txt, test_55.txt, test_56.txt, test_57.txt, test_58.txt, test_59.txt
ケース名 結果 実行時間 メモリ
hand_01.txt AC 3 ms 3420 KiB
hand_02.txt AC 2 ms 3540 KiB
hand_03.txt AC 3 ms 3536 KiB
hand_04.txt AC 3 ms 3676 KiB
hand_05.txt AC 3 ms 3476 KiB
killer_01.txt AC 1 ms 3472 KiB
killer_02.txt AC 1 ms 3488 KiB
killer_03.txt AC 1 ms 3536 KiB
killer_04.txt AC 1 ms 3484 KiB
killer_05.txt AC 1 ms 3476 KiB
killer_06.txt AC 1 ms 3532 KiB
killer_07.txt AC 1 ms 3536 KiB
killer_08.txt AC 1 ms 3404 KiB
killer_09.txt AC 1 ms 3528 KiB
killer_10.txt AC 1 ms 3496 KiB
killer_11.txt AC 1 ms 3452 KiB
killer_12.txt AC 1 ms 3468 KiB
killer_13.txt AC 1 ms 3536 KiB
killer_14.txt AC 1 ms 3480 KiB
killer_15.txt AC 1 ms 3600 KiB
killer_16.txt AC 1 ms 3496 KiB
killer_17.txt AC 1 ms 3476 KiB
killer_18.txt AC 1 ms 3604 KiB
killer_19.txt AC 1 ms 3492 KiB
killer_20.txt AC 1 ms 3468 KiB
killer_21.txt AC 1 ms 3480 KiB
killer_22.txt AC 1 ms 3488 KiB
killer_23.txt AC 1 ms 3484 KiB
killer_24.txt AC 1 ms 3416 KiB
killer_25.txt AC 1 ms 3680 KiB
killer_26.txt AC 1 ms 3612 KiB
killer_27.txt AC 1 ms 3604 KiB
killer_28.txt AC 1 ms 3612 KiB
killer_29.txt AC 1 ms 3472 KiB
killer_30.txt AC 1 ms 3540 KiB
sample_01.txt AC 1 ms 3484 KiB
sample_02.txt AC 1 ms 3404 KiB
sample_03.txt AC 1 ms 3488 KiB
sample_04.txt AC 1 ms 3536 KiB
test_01.txt AC 1 ms 3488 KiB
test_02.txt AC 1 ms 3440 KiB
test_03.txt AC 1 ms 3524 KiB
test_04.txt AC 1 ms 3444 KiB
test_05.txt AC 1 ms 3532 KiB
test_06.txt AC 1 ms 3468 KiB
test_07.txt AC 1 ms 3472 KiB
test_08.txt AC 1 ms 3532 KiB
test_09.txt AC 1 ms 3672 KiB
test_10.txt AC 1 ms 3680 KiB
test_11.txt AC 1 ms 3604 KiB
test_12.txt AC 1 ms 3456 KiB
test_13.txt AC 1 ms 3492 KiB
test_14.txt AC 1 ms 3544 KiB
test_15.txt AC 1 ms 3492 KiB
test_16.txt AC 1 ms 3480 KiB
test_17.txt AC 2 ms 3616 KiB
test_18.txt AC 1 ms 3540 KiB
test_19.txt AC 1 ms 3492 KiB
test_20.txt AC 2 ms 3492 KiB
test_21.txt AC 1 ms 3404 KiB
test_22.txt AC 1 ms 3488 KiB
test_23.txt AC 2 ms 3472 KiB
test_24.txt AC 1 ms 3492 KiB
test_25.txt AC 1 ms 3476 KiB
test_26.txt AC 2 ms 3476 KiB
test_27.txt AC 1 ms 3536 KiB
test_28.txt AC 1 ms 3468 KiB
test_29.txt AC 1 ms 3608 KiB
test_30.txt AC 1 ms 3532 KiB
test_31.txt AC 1 ms 3540 KiB
test_32.txt AC 1 ms 3536 KiB
test_33.txt AC 1 ms 3484 KiB
test_34.txt AC 1 ms 3524 KiB
test_35.txt AC 1 ms 3472 KiB
test_36.txt AC 1 ms 3472 KiB
test_37.txt AC 1 ms 3528 KiB
test_38.txt AC 1 ms 3492 KiB
test_39.txt AC 1 ms 3532 KiB
test_40.txt AC 1 ms 3600 KiB
test_41.txt AC 1 ms 3580 KiB
test_42.txt AC 1 ms 3404 KiB
test_43.txt AC 1 ms 3540 KiB
test_44.txt AC 2 ms 3444 KiB
test_45.txt AC 1 ms 3472 KiB
test_46.txt AC 1 ms 3484 KiB
test_47.txt AC 2 ms 3548 KiB
test_48.txt AC 1 ms 3492 KiB
test_49.txt AC 1 ms 3536 KiB
test_50.txt AC 2 ms 3540 KiB
test_51.txt AC 1 ms 3488 KiB
test_52.txt AC 1 ms 3612 KiB
test_53.txt AC 2 ms 3604 KiB
test_54.txt AC 1 ms 3676 KiB
test_55.txt AC 1 ms 3524 KiB
test_56.txt AC 1 ms 3536 KiB
test_57.txt AC 1 ms 3672 KiB
test_58.txt AC 1 ms 3440 KiB
test_59.txt AC 1 ms 3540 KiB