Skip to content

Instantly share code, notes, and snippets.

@Youngestdev
Created April 17, 2020 15:39
Show Gist options
  • Select an option

  • Save Youngestdev/a75a3daeeba1bb00514f5e675cdf9466 to your computer and use it in GitHub Desktop.

Select an option

Save Youngestdev/a75a3daeeba1bb00514f5e675cdf9466 to your computer and use it in GitHub Desktop.
Google Kickstart
T = int(input())
count = 0
f = 0
if T is None or T is 0:
pass
while f < T:
count += 1
n, b = map(int, input().split())
c = (input().split())
c = sorted(c)
ans = 0
for i in range(n):
if b >= int(c[i]):
ans += 1
b -= int(c[i])
print("Case #{}: {}".format(count, ans))
f += 1
@lilpolymath
Copy link
Copy Markdown

Alright.

@lilpolymath
Copy link
Copy Markdown

Why are you sorting the array?

@Youngestdev
Copy link
Copy Markdown
Author

Why are you sorting the array?

Makes it easier to quickly get the number of houses. From the solutions I've seen, the array is sorted.

@lilpolymath
Copy link
Copy Markdown

Makes no difference tho. Not sure why it says WA too.

@Youngestdev
Copy link
Copy Markdown
Author

Makes no difference? Have you run the code against the examples ?

@Youngestdev
Copy link
Copy Markdown
Author

Here's a C++ equiv:

#include<bits/stdc++.h>
using namespace std;
int main(){
    
    int t; int x = 1;
    cin>>t;
    while(t--){
        int ans = 0;
        int n,b; cin>>n>>b;
        int arr[n];
        for(int i = 0; i < n; i++) cin>>arr[i];
        sort(arr,arr+n);
        for(int i = 0; i < n; i++){
            if(b-arr[i] >= 0) ans++;
            b -= arr[i];
        }
        cout<<"Case #"<<x<<": "<<ans<<"\n";
        x++;
    }
    
}

@lilpolymath
Copy link
Copy Markdown

Why are you sorting the array?

Makes it easier to quickly get the number of houses. From the solutions I've seen, the array is sorted.

Yeah I get.

@Youngestdev
Copy link
Copy Markdown
Author

Yup. Can you translate the C++ code above to Python3?

@lilpolymath
Copy link
Copy Markdown

Yes, I can.

@Youngestdev
Copy link
Copy Markdown
Author

Yes, I can.

Cool. Try it & let's see the diff with my code. Then, we can run it and see if it works.

@lilpolymath
Copy link
Copy Markdown

num_test_case = int(input())
count = 1
while num_test_case != 0:
    ans = 0
    num, amount = map(int, input().split())
    houses = []
    for i in range(num): 
        houses.append(int(input()))
    for i in range(num):
        converted = int(houses[i])
        test = amount - converted
        if test >=  0:
            ans += 1
        amount -= converted
    print("Case #{}: {}".format(count, ans)) 
    count += 1
    num_test_case -= 1

That is what it looks like.

@lilpolymath
Copy link
Copy Markdown

Still not working I don't know why lol.

@lilpolymath
Copy link
Copy Markdown

Done. It works.

@lilpolymath
Copy link
Copy Markdown

num_test_case = int(input())
count = 1
answers = []
while num_test_case != 0:
    ans = 0
    num, amount = map(int, input().split())
    houses = list(map(int, input().split()))
    houses.sort()
    for i in range(num):
        test = amount - houses[i]
        if test >=  0:
            ans += 1
            amount -= houses[i]
        else:
            break
    print('Case #{}: {}'.format(count, ans))
    count += 1
    num_test_case -= 1
    

@Youngestdev
Copy link
Copy Markdown
Author

Turns out I didn't make the houses an array uhm.

@Youngestdev
Copy link
Copy Markdown
Author

Dr. Patel has N stacks of plates. Each stack contains K plates. Each plate has a positive beauty value, describing how beautiful it looks.

Dr. Patel would like to take exactly P plates to use for dinner tonight. If he would like to take a plate in a stack, he must also take all of the plates above it in that stack as well.

Help Dr. Patel pick the P plates that would maximize the total sum of beauty values.
Input

The first line of the input gives the number of test cases, T. T test cases follow. Each test case begins with a line containing the three integers N, K and P. Then, N lines follow. The i-th line contains K integers, describing the beauty values of each stack of plates from top to bottom.
Output

For each test case, output one line containing Case #x: y, where x is the test case number (starting from 1) and y is the maximum total sum of beauty values that Dr. Patel could pick.
Limits

Time limit: 20 seconds per test set.
Memory limit: 1GB.
1 ≤ T ≤ 100.
1 ≤ K ≤ 30.
1 ≤ P ≤ N * K.
The beauty values are between 1 and 100, inclusive.
Test set 1

1 ≤ N ≤ 3.
Test set 2

1 ≤ N ≤ 50.

Input | Output
-- | --
2 
2 4 5 
10 10 100 30 
80 50 10 50 
3 2 3
80 80 
15 50 
20 10 

| Case #1: 250 Case #2: 180

@lilpolymath
Copy link
Copy Markdown

This is a knapsack problem.

@Youngestdev
Copy link
Copy Markdown
Author

Yeah. I no sabi am 😂

@lilpolymath
Copy link
Copy Markdown

I still have a long way to go with competitive programming. I already started a course today sef.

@Youngestdev
Copy link
Copy Markdown
Author

Oh, where? I no sabi C++ but then Python is too slow for competitive programming.

@Youngestdev
Copy link
Copy Markdown
Author

What language do you intend to use? We might learn - I remember we planned to jump into it together lol

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment