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.

```
#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);
}
}
```

## 0 Comments