Pagini recente » Cod sursa (job #100527) | Cod sursa (job #496090) | Cod sursa (job #946699) | Cod sursa (job #3286824) | Cod sursa (job #2364000)
#include <iostream>
#include <fstream>
#define NMAX 10000
#define inf 0x3f3f3f3f
using namespace std;
ifstream fi("scara3.in");
ofstream fo("scara3.out");
int N, K, L;
int energizante[NMAX];
int apa[NMAX];
int dp[NMAX];
int totalCost = 0;
int main()
{
fi >> N;
fi >> K;
for(int i = 1; i <= K; ++i)
{
int a, b;
fi >> a >> b;
apa[a + b] = a;
}
fi >> L;
for(int i = 1; i <= L; ++i)
{
int a, b;
fi >> a >> b;
for(int i = 1; i <= b; ++i)
energizante[a + 2 * i] = a;
}
for(int i = 2; i <= N + 1; ++i)
{
dp[i] = dp[i-1] + 1;
if(apa[i] != 0)
{
if(dp[apa[i]] + 1 < dp[i])
dp[i] = dp[apa[i]] + 1;
}
if(energizante[i] != 0)
{
int costBack = 0;
if(dp[energizante[i]] + 1 < dp[i])
{
dp[i] = dp[energizante[i]] + 1;
costBack = (i - energizante[i] + 1) / 2;
}
totalCost += costBack;
}
}
fo << dp[N+1] <<" "<< totalCost;
}