Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- class EmergencyRepairs
- {
- static void Main()
- {
- ulong wall = ulong.Parse(Console.ReadLine());
- int emergencyKits = int.Parse(Console.ReadLine());
- int numberOfAttacks = int.Parse(Console.ReadLine());
- //determine damages after the attacks
- for (int i = 0; i < numberOfAttacks; i++)
- {
- int attack = int.Parse(Console.ReadLine());
- if (((wall >> attack) & 1) == 1)
- {
- ulong mask = ~((ulong)1 << attack);
- wall = wall & mask;
- }
- }
- //find big holes
- int bitCounter = 0;
- while (emergencyKits > 0)
- {
- if (((wall >> bitCounter) & 1) == 0 &&
- (((wall >> (bitCounter + 1)) & 1) == 0))
- {
- ulong mask = (ulong)1 << bitCounter;
- wall = wall | mask;
- emergencyKits--;
- if (emergencyKits > 0)
- {
- bitCounter++;
- mask = (ulong)1 << bitCounter;
- wall = wall | mask;
- emergencyKits--;
- }
- }
- bitCounter++;
- }
- //find small holes
- bitCounter = 0;
- while (emergencyKits > 0)
- {
- if (((wall >> bitCounter) & 1) == 0)
- {
- ulong mask = (ulong)1 << bitCounter;
- wall = wall | mask;
- emergencyKits--;
- }
- bitCounter++;
- }
- Console.WriteLine(wall);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment