Return of the Aztecs
Problem C: | Homer Simpson |
Time Limit: 3 seconds Memory Limit: 32 MB |
Homer Simpson, a very smart guy, likes eating Krusty-burgers. It takes Homer m minutes to eat a Krusty- burger. However, there�s a new type of burger in Apu�s Kwik-e-Mart. Homer likes those too. It takes him n minutes to eat one of these burgers. Given t minutes, you have to find out the maximum number of burgers Homer can eat without wasting any time. If he must waste time, he can have beer. |
Input
Input consists of several test cases. Each test case consists of three integers m, n, t (0 < m,n,t < 10000). Input is terminated by EOF.
Output
For each test case, print in a single line the maximum number of burgers Homer can eat without having beer. If homer must have beer, then also print the time he gets for drinking, separated by a single space. It is preferable that Homer drinks as little beer as possible.
Sample Input
3 5 54 3 5 55
Sample Output
18 17
Problem setter: Sadrul Habib Chowdhury
Solution author: Monirul Hasan (Tomal)
Time goes, you say? Ah no!
Alas, Time stays, we go.
-- Austin Dobson
---------
啊好水好水
---------
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int n,m,t;
int f[11111];
int main()
{
while (~scanf("%d%d%d",&n,&m,&t))
{
memset(f,-1,sizeof(f));
f[0]=0;
for (int i=0;i<=t-n;i++)
{
if (f[i]>=0)
{
f[i+n]=max( f[i+n],f[i]+1 );
}
}
for (int i=0;i<=t-m;i++)
{
if (f[i]>=0)
{
f[i+m]=max( f[i+m],f[i]+1 );
}
}
if (f[t]!=-1)
{
printf("%d\n",f[t]);
}
else
{
int ans=0;
int tmp=0;
for (int i=t;i>=0;i--)
{
if (f[i]!=-1)
{
ans=f[i];
tmp=i;
break;
}
}
printf("%d %d\n",ans,t-tmp);
}
}
return 0;
}