Skip to content
Programmingoneonone
Programmingoneonone
  • CS Subjects
    • Internet of Things (IoT)
    • Digital Communication
    • Human Values
    • Cybersecurity
  • Programming Tutorials
    • C Programming
    • Data structures and Algorithms
    • 100+ Java Programs
    • 100+ C Programs
  • HackerRank Solutions
    • HackerRank Algorithms Solutions
    • HackerRank C problems solutions
    • HackerRank C++ problems solutions
    • HackerRank Java problems solutions
    • HackerRank Python problems solutions
  • Work with US
Programmingoneonone
Programmingoneonone

HackerEarth Round Table Killers problem solution

YASH PAL, 31 July 202411 February 2026
In this HackerEarth Round Table Killers problem solution There is a round table in which N people are sitting. You can look at the image for their seating arrangement. Initially, the person numbered X holds a gun. In addition to it there is a special number K that helps in determining the persons to be killed. The killing starts as follows – Firstly the person numbered X starts and he kills a total of X%X people sitting clockwise of him and he gives the gun to the person i who is sitting just next to the last person killed. Now that person also kills the next i%K people and this goes on. If at any instant the total number of persons that are remaining is not greater than i%K where i is the number of people holding the gun then the person i wins. You can show that sooner or later only one person remains. So your job is to decide which numbered person will win this killing game.
HackerEarth Round Table Killers problem solution

HackerEarth Round Table Killers problem solution.

#include<bits/stdc++.h>
#define LL long long int
#define M 1000000007
#define reset(a) memset(a,0,sizeof(a))
#define rep(i,j,k) for(i=j;i<=k;++i)
#define per(i,j,k) for(i=j;i>=k;--i)
#define print(a,start,end) for(i=start;i<=end;++i) cout<<a[i];
#define endl "n"
#define inf 100000000000000
LL pow(LL a,LL b,LL m){LL x=1,y=a;while(b > 0){if(b%2 == 1){x=(x*y);if(x>m) x%=m;}y = (y*y);if(y>m) y%=m;b /= 2;}return x%m;}
LL gcd(LL a,LL b){if(b==0) return a; else return gcd(b,a%b);}
LL gen(LL start,LL end){LL diff = end-start;LL temp = rand()%start;return temp+diff;}
using namespace std;
set<int> s;
int main()
{
//ios_base::sync_with_stdio(0);
int n , k , temp , x;
cin >> n >> k >> x;
for(int i = 1 ; i <= n ; i++)
s.insert(i);
int offset = n%k;

set<int>:: iterator it;
while(1)
{
offset = x%k;
temp = x;
s.erase(temp);
if(offset + 1 > s.size())
{
cout << x ;
return 0;
}
while(offset)
{
it = s.upper_bound(x);
if(it == s.end())
{
x = *(s.begin());
s.erase(s.begin());
--offset;
}
else
{
x = *it;
s.erase(it);
--offset;
}
}
it = s.upper_bound(x);
if(it == s.end())
{
x = *s.begin();
}
else
x = *it;
s.insert(temp);
}
}
coding problems solutions HackerEarth HackerEarth

Post navigation

Previous post
Next post

Leave a Reply

Your email address will not be published. Required fields are marked *

Pages

  • About US
  • Contact US
  • Privacy Policy

Follow US

  • YouTube
  • LinkedIn
  • Facebook
  • Pinterest
  • Instagram
©2026 Programmingoneonone | WordPress Theme by SuperbThemes