Pagini recente » Cod sursa (job #291241) | Profil UAIC_CHELSAU_ANDREAS | Cod sursa (job #222776) | Cod sursa (job #158051) | Cod sursa (job #2816401)
#include <bits/stdc++.h>
using namespace std;
ifstream f("scara3.in");
ofstream g("scara3.out");
int apa[1202],nrg[1202],dp[1202],cost[1202];
int main()
{
int i,n,k,a,b,l;
f>>n;
f>>k;
for(i=1;i<=k;i++)
{
f>>a>>b;
apa[a]=b;
}
f>>l;
for(i=1;i<=l;i++)
{
f>>a>>b;
nrg[a]=b;
}
for(i=2;i<=n;i++)
cost[i]=dp[i]=INT_MAX;
dp[1]=1;
for(i=1; i<n; i++)
{
if(!dp[i+1]|| dp[i+1]>dp[i]+1||(cost[i+1]>cost[i]&&dp[i+1]==dp[i]+1))
{
dp[i+1]=dp[i]+1;
cost[i+1]=cost[i];
}
if(apa[i])
for(int j=2; j<=apa[i]&&i+j<=n; j++)
if(!dp[i+j]|| dp[i+j]>dp[i]+1||(cost[i+j]>cost[i]&&dp[i+j]==dp[i]+1))
{
dp[i+j]=dp[i]+1;
cost[i+j]=cost[i];
}
if(nrg[i])
for(int j=2; j<=2*nrg[i]&&i+j<=n; j++)
if(!dp[i+j]|| dp[i+j]>dp[i]+1||(cost[i+j]>cost[i]+(j+1)/2 && dp[i+j]==dp[i]+1))
{
dp[i+j]=dp[i]+1;
cost[i+j]=cost[i]+(j+1)/2;
}
}
g<<dp[n]<<' '<<cost[n];
return 0;
}