Skip to main content

Posts

Showing posts from November, 2017

Architect's Dilemma..!

                                     Architect's Dilemma..!                                                                     Binary Search Problem Link #include <iostream> #include <algorithm> using namespace std; typedef long long ll; ll n, w, a[100005], pre[100005], maxx[100005]; bool f(int x) {     for(int i = 0, j = x; j <= n; j++, i++)     {         if((x * maxx[j] - (pre[j] - pre[i])) <= w)             return 1;     }     return 0; } int main() {     cin >> n >> w;     for(int i = 1; i <= n; i++)         cin >> a[i];     sort(a + 1, a + n + 1);     for(int i = 1; i <= n; i++)     {         pre[i] = pre[i - 1] + a[i];         maxx[i] = max(maxx[i - 1], a[i]);     }     int l = 1, r = n, ans;     while(l <= r)     {         int mid = (l + r) / 2;         if(f(mid))         {             ans = mid;             l = mid + 1;         }    

Moving to New Office

                      Moving to New Office                                   DP Problem Link #include <iostream> #define INF 99999999 using namespace std; int main() {     int t, x, y, n;     int m[100];     long dp[101][101];     cin >> t;     while(t--)     {         cin >> x >> y;         cin >> n;         for(int i = 0; i < n; i++)         {             cin >> m[i];         }         for(int i = 0; i < n; i++)         {             for(int j = 0; j < n; j++)                 dp[i][j] = INF;         }         for(int l = 2; l <= n; l++)         {             for(int i = 0; i <= n - l; i++)             {                 int j = i + l - 1;                 if(l == 2)                 {                     dp[i][j] = 0;                     //cout << "i = " << i << " j = " << j << " Val = " <&

Numbers II

                                Numbers II                                               Binary Search Program Link #include <iostream> #include <algorithm> using namespace std; typedef long long ll; ll findTerm(ll a, ll b, ll lcm, ll value) {     return (value / a) + (value / b) - (value / lcm); } ll  solve(ll a, ll b, ll n) {     ll gcd  = __gcd(a,b);     ll lcm = (a * b) / gcd;     ll rema = lcm / a;     ll remb = lcm / b;     ll low = (n / (rema + remb - 1))  * lcm;     ll high = min(a, b) * n;     ll ans;     while(low <= high)     {         ll mid = (low + high) / 2;         ll term = findTerm(a, b, lcm, mid);         if(term >= n)         {             ans = mid;             high = mid - 1;         }         else         {             low = mid + 1;         }     }     return ans; } int main() {     int t;     ll a, b, n;     cin >> t;     while