Submission #3457045


Source Code Expand

// template version 1.3
// {{{ define basic macro
using namespace std;
#include <iostream>
#include <bits/stdc++.h>
#define _overload3(_1,_2,_3,name,...) name
#define _rep(i,n) repi(i,0,n)
#define repi(i,a,b) for(int i=(int)(a);i<(int)(b);++i)
#define rep(...) _overload3(__VA_ARGS__,repi,_rep,)(__VA_ARGS__)
#define _rrep(i,n) rrepi(i,0,n)
#define rrepi(i,a,b) for(int i=(int)(b-1);i>=(int)(a);--i)
#define rrep(...) _overload3(__VA_ARGS__,rrepi,_rrep,)(__VA_ARGS__)
#define all(x) (x).begin(),(x).end()
#define sum(v) accumulate(all(v), 0LL)
#define sz(x) ((int)(x).size())
#define pb(a) push_back(a)
#define mp(a, b) make_pair(a, b)
#define uni(x) sort(all(x));x.erase(unique(all(x)),x.end())
#define ten(n) ((int)1e##n)
template<class T, size_t N> size_t sza(const T (&array)[N]) { return N; }
template<class T> inline void chmax(T &a, const T &b) { if(a < b) a = b; }
template<class T> inline void chmin(T &a, const T &b) { if(a > b) a = b; }
template<class T=int> T in() {T x; cin>>x; return (x);}

struct Fast {
  Fast(){
    std::cin.tie(0);
    ios::sync_with_stdio(false);
  }
} fast;

// dump macro
#ifdef PCM
  #include "dump.hpp"
#else
  #define dump(...) 42
  #define dump_1d(...) 42
  #define dump_2d(...) 42
#endif

typedef long long ll;
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef long double ld;
typedef pair<int,int> pii;
typedef tuple<int,int,int> iii;
template<typename T> using PQ = priority_queue<T, vector<T>, greater<T>>;
int dx[]={1, -1, 0, 0};
int dy[]={0, 0, 1, -1};
#define fi first
#define se second

// }}}
// varible setting{{{

#define infile "../test/sample-1.in"
#define int long long
#define INF 1000000000000000000LL
// #define INF 2147483647
#define MOD 1000000007LL

// }}}

int w[1005];
int p[1005];
int n,k;
int W;

bool isright(int z){
  double y[n];
  double x = (double)z/W;
  dump(x);
  rep(i, n){
    y[i] = w[i]*(p[i]-x);
  }
  sort(y, y+n);
  reverse(y, y+n);

  double sum = 0;
  rep(i, k){
    sum += y[i];
  }
  if (sum>=0) return false;
  else return true;

}

int solve(){
  cin>>n>>k;
  rep(i, n){
    cin>>w[i]>>p[i];
  }
  W = accumulate(w, w+n, 0LL);

  int left = 0;
  int right = 1e14 + 5;
  while (right-left>1){
    int mid = (right+left)/2;
    if (isright(mid)) { right = mid;}
    else{ left = mid; }
  }
  // cout << (double)left / W << endl;
  printf("%.9f", (double)left / W);

  return 0;
}

signed main() { //{{{
#ifdef INPUT_FROM_FILE
  std::ifstream in(infile);
  std::cin.rdbuf(in.rdbuf());
#endif
  solve();
  return 0;
} //}}}

Submission Info

Submission Time
Task D - 食塩水
User kjnh10
Language C++14 (GCC 5.4.1)
Score 100
Code Size 2513 Byte
Status AC
Exec Time 3 ms
Memory 256 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 100 / 100
Status
AC × 2
AC × 22
Set Name Test Cases
Sample s0.txt, s1.txt
All 000.txt, 001.txt, 002.txt, 003.txt, 004.txt, 005.txt, 006.txt, 007.txt, 008.txt, 009.txt, 010.txt, 011.txt, 012.txt, 013.txt, 014.txt, 015.txt, 016.txt, 017.txt, 018.txt, 019.txt, s0.txt, s1.txt
Case Name Status Exec Time Memory
000.txt AC 3 ms 256 KB
001.txt AC 1 ms 256 KB
002.txt AC 3 ms 256 KB
003.txt AC 1 ms 256 KB
004.txt AC 3 ms 256 KB
005.txt AC 3 ms 256 KB
006.txt AC 3 ms 256 KB
007.txt AC 3 ms 256 KB
008.txt AC 3 ms 256 KB
009.txt AC 1 ms 256 KB
010.txt AC 3 ms 256 KB
011.txt AC 2 ms 256 KB
012.txt AC 3 ms 256 KB
013.txt AC 2 ms 256 KB
014.txt AC 3 ms 256 KB
015.txt AC 2 ms 256 KB
016.txt AC 3 ms 256 KB
017.txt AC 2 ms 256 KB
018.txt AC 3 ms 256 KB
019.txt AC 2 ms 256 KB
s0.txt AC 1 ms 256 KB
s1.txt AC 1 ms 256 KB