Отримання знань

дистанційна підтримка освіти школярів


Поездка на рыбалку
http://acm.pku.edu.cn/JudgeOnline/problem?id=1042

   Входные данные

   Выходные данные

   Пример входных данных

   Пример выходных данных

   Анализ условия и обсуждение идеи решения

   Пример решения на C++:

#include < iostream >
using namespace std;
int main() {
int i,j,k,g,n,h,ans,tot,tt=0,f[32],d[32],t[32],now[32],tnow[32],times[32];
while (scanf("%d",&n),n) {
if (tt++) printf("\n");
scanf("%d",&h);
h*=12;
for (i=0; i < n;++i) {
scanf("%d",&f[i]);
now[i]=f[i];
}
for (i=0; i < n; ++i)
scanf("%d", &d[i]);
for (i=0; i < n-1; ++i)
scanf("%d", &t[i]);
memset(times,0,sizeof(times));
for (ans=i=0; i < n && h > 0; ++i)
{
for (j=0; j < i; ++j)
now[j]=f[j];
memset(tnow,0,sizeof(tnow));
for (tot=k=0; k < h; ++k)
{
for (g=0, j=1; j <= i; ++j)
if (now[j] > now[g])
g=j;
tot+=now[g];
now[g]-=d[g];
if (now[g] < 0)
now[g]=0;
++tnow[g];
}
if (tot > ans)
{
ans=tot;
for (j=0; j < n; ++j)
times[j]=tnow[j];
}
else if (tot==ans)
{
for (j=0; j < n; ++j)
if (tnow[j]!=times[j])
break;
if (j <n && tnow[j] > times[j])
for (g=j; g < n; ++g)
times[g]=tnow[g];
}
h-=t[i];
}
for (i=0; i < n-1; ++i)
printf("%d, ",times[i]*5);
printf("%d\nNumber of fish expected: %d\n",times[n-1]*5,ans);
}
return 0;
}

 

Попередня Зміст Наступна
В системі: гості - (1); користувачі - (0)