#pragma GCC optimize ("Ofast")
#include<bits/stdc++.h>
using namespace std;
template < class S, class T> inline S max_L( S a,T b) {
return a>= b? a: b;
}
#define main dummy_main
int main( ) {
return 0 ;
}
#undef main
int doit[ 100000 ] ;
class Solution{
public :
vector< int > busiestServers( int n, vector< int > & arrival, vector< int > & load) {
int i;
int mx;
int x;
int y;
int k;
set< int > ave;
set< int > :: iterator it;
set< pair< int ,int >> work;
vector< int > res;
for ( i= ( 0 ) ; i< ( n) ; i++ ) {
doit[ i] = 0 ;
}
for ( i= ( 0 ) ; i< ( n) ; i++ ) {
ave.insert ( i) ;
}
for ( i= ( 0 ) ; i< ( arrival.size ( ) ) ; i++ ) {
x = arrival[ i] ;
y = arrival[ i] + load[ i] ;
while ( work.size ( ) && work.begin ( ) - > first <= x) {
ave.insert ( work.begin ( ) - > second) ;
work.erase ( work.begin ( ) ) ;
}
if ( ave.size ( ) == 0 ) {
continue ;
}
it = ave.lower_bound ( i% n) ;
if ( it == ave.end ( ) ) {
it = ave.begin ( ) ;
}
k = * it;
ave.erase ( it) ;
work.insert ( make_pair( y, k) ) ;
doit[ k] ++ ;
}
{
int WYIGIcGE;
int t_ynMSdg;
if ( n== 0 ) {
t_ynMSdg = 0 ;
}
else {
t_ynMSdg = doit[ 0 ] ;
for ( WYIGIcGE= ( 1 ) ; WYIGIcGE< ( n) ; WYIGIcGE++ ) {
t_ynMSdg = max_L( t_ynMSdg, doit[ WYIGIcGE] ) ;
}
}
mx = t_ynMSdg;
}
for ( i= ( 0 ) ; i< ( n) ; i++ ) {
if ( doit[ i] == mx) {
res.push_back ( i) ;
}
}
return res;
}
}
;
// cLay version 20201121-1
// --- original code ---
// #define main dummy_main
// {}
// #undef main
//
// int doit[1d5];
//
// class Solution {
// public:
// vector<int> busiestServers(int n, vector<int>& arrival, vector<int>& load) {
// int mx, x, y, k;
// set<int> ave;
// set<int>::iterator it;
// set<pair<int,int>> work;
// vector<int> res;
//
// rep(i,n) doit[i] = 0;
// rep(i,n) ave.insert(i);
//
// rep(i,arrival.size()){
// x = arrival[i];
// y = arrival[i] + load[i];
// while(work.size() && work.begin()->first <= x){
// ave.insert(work.begin()->second);
// work.erase(work.begin());
// }
//
// if(ave.size()==0) continue;
// it = ave.lower_bound(i%n);
// if(it == ave.end()) it = ave.begin();
// k = *it;
// ave.erase(it);
//
// work.insert(make_pair(y, k));
// doit[k]++;
// }
//
// mx = max(doit(n));
// rep(i,n) if(doit[i]==mx) res.push_back(i);
// return res;
// }
// };
I3ByYWdtYSBHQ0Mgb3B0aW1pemUgKCJPZmFzdCIpCiNpbmNsdWRlPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnRlbXBsYXRlPGNsYXNzIFMsIGNsYXNzIFQ+IGlubGluZSBTIG1heF9MKFMgYSxUIGIpewogIHJldHVybiBhPj1iP2E6YjsKfQojZGVmaW5lIG1haW4gZHVtbXlfbWFpbgppbnQgbWFpbigpewogIHJldHVybiAwOwp9CiN1bmRlZiBtYWluCmludCBkb2l0WzEwMDAwMF07CmNsYXNzIFNvbHV0aW9uewogIHB1YmxpYzoKICB2ZWN0b3I8aW50PiBidXNpZXN0U2VydmVycyhpbnQgbiwgdmVjdG9yPGludD4mIGFycml2YWwsIHZlY3RvcjxpbnQ+JiBsb2FkKXsKICAgIGludCBpOwogICAgaW50IG14OwogICAgaW50IHg7CiAgICBpbnQgeTsKICAgIGludCBrOwogICAgc2V0PGludD4gYXZlOwogICAgc2V0PGludD46Oml0ZXJhdG9yIGl0OwogICAgc2V0PHBhaXI8aW50LGludD4+IHdvcms7CiAgICB2ZWN0b3I8aW50PiByZXM7CiAgICBmb3IoaT0oMCk7aTwobik7aSsrKXsKICAgICAgZG9pdFtpXSA9IDA7CiAgICB9CiAgICBmb3IoaT0oMCk7aTwobik7aSsrKXsKICAgICAgYXZlLmluc2VydChpKTsKICAgIH0KICAgIGZvcihpPSgwKTtpPChhcnJpdmFsLnNpemUoKSk7aSsrKXsKICAgICAgeCA9IGFycml2YWxbaV07CiAgICAgIHkgPSBhcnJpdmFsW2ldICsgbG9hZFtpXTsKICAgICAgd2hpbGUod29yay5zaXplKCkgJiYgd29yay5iZWdpbigpLT5maXJzdCA8PSB4KXsKICAgICAgICBhdmUuaW5zZXJ0KHdvcmsuYmVnaW4oKS0+c2Vjb25kKTsKICAgICAgICB3b3JrLmVyYXNlKHdvcmsuYmVnaW4oKSk7CiAgICAgIH0KICAgICAgaWYoYXZlLnNpemUoKT09MCl7CiAgICAgICAgY29udGludWU7CiAgICAgIH0KICAgICAgaXQgPSBhdmUubG93ZXJfYm91bmQoaSVuKTsKICAgICAgaWYoaXQgPT0gYXZlLmVuZCgpKXsKICAgICAgICBpdCA9IGF2ZS5iZWdpbigpOwogICAgICB9CiAgICAgIGsgPSAqaXQ7CiAgICAgIGF2ZS5lcmFzZShpdCk7CiAgICAgIHdvcmsuaW5zZXJ0KG1ha2VfcGFpcih5LCBrKSk7CiAgICAgIGRvaXRba10rKzsKICAgIH0KICAgIHsKICAgICAgaW50IFdZSUdJY0dFOwogICAgICBpbnQgdF95bk1TZGc7CiAgICAgIGlmKG49PTApewogICAgICAgIHRfeW5NU2RnID0gMDsKICAgICAgfQogICAgICBlbHNlewogICAgICAgIHRfeW5NU2RnID0gZG9pdFswXTsKICAgICAgICBmb3IoV1lJR0ljR0U9KDEpO1dZSUdJY0dFPChuKTtXWUlHSWNHRSsrKXsKICAgICAgICAgIHRfeW5NU2RnID0gbWF4X0wodF95bk1TZGcsIGRvaXRbV1lJR0ljR0VdKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgbXggPXRfeW5NU2RnOwogICAgfQogICAgZm9yKGk9KDApO2k8KG4pO2krKyl7CiAgICAgIGlmKGRvaXRbaV09PW14KXsKICAgICAgICByZXMucHVzaF9iYWNrKGkpOwogICAgICB9CiAgICB9CiAgICByZXR1cm4gcmVzOwogIH0KfQo7Ci8vIGNMYXkgdmVyc2lvbiAyMDIwMTEyMS0xCgovLyAtLS0gb3JpZ2luYWwgY29kZSAtLS0KLy8gI2RlZmluZSBtYWluIGR1bW15X21haW4KLy8ge30KLy8gI3VuZGVmIG1haW4KLy8gCi8vIGludCBkb2l0WzFkNV07Ci8vIAovLyBjbGFzcyBTb2x1dGlvbiB7Ci8vIHB1YmxpYzoKLy8gICB2ZWN0b3I8aW50PiBidXNpZXN0U2VydmVycyhpbnQgbiwgdmVjdG9yPGludD4mIGFycml2YWwsIHZlY3RvcjxpbnQ+JiBsb2FkKSB7Ci8vICAgICBpbnQgbXgsIHgsIHksIGs7Ci8vICAgICBzZXQ8aW50PiBhdmU7Ci8vICAgICBzZXQ8aW50Pjo6aXRlcmF0b3IgaXQ7Ci8vICAgICBzZXQ8cGFpcjxpbnQsaW50Pj4gd29yazsKLy8gICAgIHZlY3RvcjxpbnQ+IHJlczsKLy8gCi8vICAgICByZXAoaSxuKSBkb2l0W2ldID0gMDsKLy8gICAgIHJlcChpLG4pIGF2ZS5pbnNlcnQoaSk7Ci8vIAovLyAgICAgcmVwKGksYXJyaXZhbC5zaXplKCkpewovLyAgICAgICB4ID0gYXJyaXZhbFtpXTsKLy8gICAgICAgeSA9IGFycml2YWxbaV0gKyBsb2FkW2ldOwovLyAgICAgICB3aGlsZSh3b3JrLnNpemUoKSAmJiB3b3JrLmJlZ2luKCktPmZpcnN0IDw9IHgpewovLyAgICAgICAgIGF2ZS5pbnNlcnQod29yay5iZWdpbigpLT5zZWNvbmQpOwovLyAgICAgICAgIHdvcmsuZXJhc2Uod29yay5iZWdpbigpKTsKLy8gICAgICAgfQovLyAKLy8gICAgICAgaWYoYXZlLnNpemUoKT09MCkgY29udGludWU7Ci8vICAgICAgIGl0ID0gYXZlLmxvd2VyX2JvdW5kKGklbik7Ci8vICAgICAgIGlmKGl0ID09IGF2ZS5lbmQoKSkgaXQgPSBhdmUuYmVnaW4oKTsKLy8gICAgICAgayA9ICppdDsKLy8gICAgICAgYXZlLmVyYXNlKGl0KTsKLy8gCi8vICAgICAgIHdvcmsuaW5zZXJ0KG1ha2VfcGFpcih5LCBrKSk7Ci8vICAgICAgIGRvaXRba10rKzsKLy8gICAgIH0KLy8gCi8vICAgICBteCA9IG1heChkb2l0KG4pKTsKLy8gICAgIHJlcChpLG4pIGlmKGRvaXRbaV09PW14KSByZXMucHVzaF9iYWNrKGkpOwovLyAgICAgcmV0dXJuIHJlczsKLy8gICB9Ci8vIH07Cg==