Задача Key Revolver
Здравейте,
На тази задача ми дава 80 точки и не мога да намеря грешката.
Условие на задачата: https://judge.softuni.bg/Contests/Practice/Index/1447#0
Моето решение: https://pastebin.com/0Mwa1DdN
Здравейте,
На тази задача ми дава 80 точки и не мога да намеря грешката.
Условие на задачата: https://judge.softuni.bg/Contests/Practice/Index/1447#0
Моето решение: https://pastebin.com/0Mwa1DdN
В условието пише, че трябва да презаредиш патрони след изтрелване на пълнителя "intsizeOfTheGunBarrel", а ти презареждаш на всяко завъртане на while цикъла. Прилагам примерно решение да сравниш.
int priceOfBullet = int.Parse(Console.ReadLine());
int gunBarrelSize = int.Parse(Console.ReadLine()); // count bullet in barrel
var bullets = new Stack<int>(Console.ReadLine().Split().Select(int.Parse).ToArray());
var locks = new Queue<int>(Console.ReadLine().Split().Select(int.Parse).ToArray());
var intelligence = int.Parse(Console.ReadLine());
int countBullet = bullets.Count;
int counterBullet = 0;
;
while (true)
{
if(bullets.Count == 0 || locks.Count == 0)
break;
var bullet = bullets.Peek();
var lok = locks.Peek();
if (bullet <= lok)
{
Console.WriteLine("Bang!");
locks.Dequeue();
}
else
{
Console.WriteLine("Ping!");
}
bullets.Pop();
counterBullet++;
if (counterBullet == gunBarrelSize && bullets.Count != 0)
{
counterBullet = 0;
Console.WriteLine("Reloading!");
}
}
countBullet -= bullets.Count;
var bulletsCost = countBullet * priceOfBullet;
if (locks.Count == 0)
{
Console.WriteLine($"{bullets.Count} bullets left. Earned ${intelligence - bulletsCost}");
}
else
{
Console.WriteLine($"Couldn't get through. Locks left: {locks.Count}");
}
Успех.
Ето и едно примерно решение на Python:
from collections import deque
bullet_price = int(input())
size_barrel = int(input())
bullets = input().split(' ')
bullets = deque([int(item) for item in bullets])
org_bullets = deque(bullets)
locks = input().split(' ')
locks = deque([int(item) for item in locks])
intelligence = int(input())
shoot = 0
while bullets and locks:
if bullets and shoot == size_barrel:
print(f'Reloading!')
shoot = 0
if bullets[-1] <= locks[0]:
print('Bang!')
bullets.pop()
locks.popleft()
shoot += 1
else:
print('Ping!')
bullets.pop()
shoot += 1
if bullets and shoot == size_barrel:
print(f'Reloading!')
shoot = 0
if locks:
print(f"Couldn't get through. Locks left: {len(locks)}")
else:
cost = (len(org_bullets) - len(bullets)) * bullet_price
profit = intelligence - cost
print(f"{len(bullets)} bullets left. Earned ${profit}")
Много благодаря за отговора!
Нямах възможност да тествам кода в Judge, но връща коректно отговорите от документа. Ако несработи логиката, кажи да потърся друг вариант и откриване на грешките.
И в Judge твоя код дава 100/100. Всичко е точно!