Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fstream>
- using namespace std;
- // BUG
- ifstream in("scara1.in");
- ofstream out("scara1.out");
- int n, water[1205], energy[1205], step[1205], pocket[1205], k;
- void up(int x, int y, int c) {
- if(step[x] > y || step[x] == 0) {
- step[x] = y;
- pocket[x] = c;
- }
- else if(step[x] == y)
- pocket[x] = min(pocket[x], c);
- }
- void dp() {
- step[1] = 1, pocket[1] = 0;
- for(int i = 1; i <= n; i++) {
- up(i+1, step[i]+1, pocket[i]);
- if(water[i] != 0)
- for(int j = 1; j <= water[i] && i+j <= n; j++)
- up(i+j, step[i]+1, pocket[i]);
- if(energy[i] != 0)
- for(int j = 1; j <= 2*energy[i] && i+j <= n; j++)
- up(i+j, step[i]+1, pocket[i] + (j-1)/2 + 1);
- }
- }
- int main() {
- int x = 0;
- in >> n >> k;
- while(k--) {
- in >> x;
- in >> water[x];
- }
- in >> k;
- while(k--) {
- in >> x;
- in >> energy[x];
- }
- dp();
- out << step[n] << " " << pocket[n];
- in.close();
- out.close();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement