Submission #203705

#TimeUsernameProblemLanguageResultExecution timeMemory
203705rqiDevil's Share (RMI19_devil)C++14
27 / 100
58 ms2012 KiB
#pragma GCC optimize ("O3") #pragma GCC target ("sse4") #include <bits/stdc++.h> using namespace std; typedef double db; typedef long long ll; typedef long double ld; typedef string str; typedef pair<int, int> pi; typedef pair<ll,ll> pl; typedef pair<ld,ld> pd; typedef complex<ld> cd; typedef vector<int> vi; typedef vector<ll> vl; typedef vector<ld> vd; typedef vector<str> vs; typedef vector<pi> vpi; typedef vector<pl> vpl; typedef vector<cd> vcd; #define FOR(i,a,b) for (int i = (a); i < (b); i++) #define F0R(i,a) FOR(i,0,a) #define ROF(i,a,b) for (int i = (b)-1; i >= (a); i--) #define R0F(i,a) ROF(i,0,a) #define trav(a,x) for (auto& a : x) #define mp make_pair #define pb push_back #define eb emplace_back #define f first #define s second #define lb lower_bound #define ub upper_bound #define sz(x) (int)x.size() #define all(x) begin(x), end(x) #define rall(x) rbegin(x), rend(x) #define rsz resize #define ins insert const int MOD = 1e9+7; // 998244353 = (119<<23)+1 const ll INF = 1e18; const int MX = 2e5+5; const ld PI = 4*atan((ld)1); template<class T> bool ckmin(T& a, const T& b) { return a > b ? a = b, 1 : 0; } template<class T> bool ckmax(T& a, const T& b) { return a < b ? a = b, 1 : 0; } mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); #include <ext/pb_ds/tree_policy.hpp> #include <ext/pb_ds/assoc_container.hpp> #include <ext/rope> using namespace __gnu_pbds; using namespace __gnu_cxx; template <class T> using Tree = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>; #define ook order_of_key #define fbo find_by_order namespace input { template<class T> void re(complex<T>& x); template<class T1, class T2> void re(pair<T1,T2>& p); template<class T> void re(vector<T>& a); template<class T, size_t SZ> void re(array<T,SZ>& a); template<class T> void re(T& x) { cin >> x; } void re(double& x) { string t; re(t); x = stod(t); } void re(ld& x) { string t; re(t); x = stold(t); } template<class T, class... Ts> void re(T& t, Ts&... ts) { re(t); re(ts...); } template<class T> void re(complex<T>& x) { T a,b; re(a,b); x = cd(a,b); } template<class T1, class T2> void re(pair<T1,T2>& p) { re(p.f,p.s); } template<class T> void re(vector<T>& a) { F0R(i,sz(a)) re(a[i]); } template<class T, size_t SZ> void re(array<T,SZ>& a) { F0R(i,SZ) re(a[i]); } } using namespace input; namespace output { void pr(int x) { cout << x; } void pr(long x) { cout << x; } void pr(ll x) { cout << x; } void pr(unsigned x) { cout << x; } void pr(unsigned long x) { cout << x; } void pr(unsigned long long x) { cout << x; } void pr(float x) { cout << x; } void pr(double x) { cout << x; } void pr(ld x) { cout << x; } void pr(char x) { cout << x; } void pr(const char* x) { cout << x; } void pr(const string& x) { cout << x; } void pr(bool x) { pr(x ? "true" : "false"); } template<class T> void pr(const complex<T>& x) { cout << x; } template<class T1, class T2> void pr(const pair<T1,T2>& x); template<class T> void pr(const T& x); template<class T, class... Ts> void pr(const T& t, const Ts&... ts) { pr(t); pr(ts...); } template<class T1, class T2> void pr(const pair<T1,T2>& x) { pr("{",x.f,", ",x.s,"}"); } template<class T> void pr(const T& x) { pr("{"); // const iterator needed for vector<bool> bool fst = 1; for (const auto& a: x) pr(!fst?", ":"",a), fst = 0; pr("}"); } void ps() { pr("\n"); } // print w/ spaces template<class T, class... Ts> void ps(const T& t, const Ts&... ts) { pr(t); if (sizeof...(ts)) pr(" "); ps(ts...); } void pc() { pr("]\n"); } // debug w/ commas template<class T, class... Ts> void pc(const T& t, const Ts&... ts) { pr(t); if (sizeof...(ts)) pr(", "); pc(ts...); } #define dbg(x...) pr("[",#x,"] = ["), pc(x); } using namespace output; namespace io { void setIn(string s) { freopen(s.c_str(),"r",stdin); } void setOut(string s) { freopen(s.c_str(),"w",stdout); } void setIO(string s = "") { cin.sync_with_stdio(0); cin.tie(0); // fast I/O cin.exceptions(cin.failbit); // ex. throws exception when you try to read letter into int if (sz(s)) { setIn(s+".in"), setOut(s+".out"); } // for USACO } } using namespace io; template<class T> T invGeneral(T a, T b) { a %= b; if (a == 0) return b == 1 ? 0 : -1; T x = invGeneral(b,a); return x == -1 ? -1 : ((1-(ll)b*x)/a+b)%b; } template<class T> struct modular { T val; explicit operator T() const { return val; } modular() { val = 0; } modular(const ll& v) { val = (-MOD <= v && v <= MOD) ? v : v % MOD; if (val < 0) val += MOD; } // friend ostream& operator<<(ostream& os, const modular& a) { return os << a.val; } friend void pr(const modular& a) { pr(a.val); } friend void re(modular& a) { ll x; re(x); a = modular(x); } friend bool operator==(const modular& a, const modular& b) { return a.val == b.val; } friend bool operator!=(const modular& a, const modular& b) { return !(a == b); } friend bool operator<(const modular& a, const modular& b) { return a.val < b.val; } modular operator-() const { return modular(-val); } modular& operator+=(const modular& m) { if ((val += m.val) >= MOD) val -= MOD; return *this; } modular& operator-=(const modular& m) { if ((val -= m.val) < 0) val += MOD; return *this; } modular& operator*=(const modular& m) { val = (ll)val*m.val%MOD; return *this; } friend modular pow(modular a, ll p) { modular ans = 1; for (; p; p /= 2, a *= a) if (p&1) ans *= a; return ans; } friend modular inv(const modular& a) { auto i = invGeneral(a.val,MOD); assert(i != -1); return i; } // equivalent to return exp(b,MOD-2) if MOD is prime modular& operator/=(const modular& m) { return (*this) *= inv(m); } friend modular operator+(modular a, const modular& b) { return a += b; } friend modular operator-(modular a, const modular& b) { return a -= b; } friend modular operator*(modular a, const modular& b) { return a *= b; } friend modular operator/(modular a, const modular& b) { return a /= b; } }; typedef modular<int> mi; typedef pair<mi,mi> pmi; typedef vector<mi> vmi; typedef vector<pmi> vpmi; string ans1[4000] = { "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "4", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "44", "44", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "444", "444", "444", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "3", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "43", "34", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "443", "434", "344", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "4443", "4443", "4344", "3444", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "33", "33", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "433", "334", "334", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "4433", "4343", "3344", "3344", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "44433", "43434", "43344", "33444", "33444", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "333", "333", "333", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "4333", "3334", "3334", "3334", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "44333", "43433", "33344", "33344", "33344", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "444333", "434343", "433344", "333444", "333444", "333444", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "2", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "42", "24", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "442", "424", "244", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "4442", "4442", "4244", "2444", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "32", "23", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "432", "324", "234", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "4432", "4234", "3244", "2344", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "44432", "43424", "42344", "32444", "23444", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "332", "323", "233", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "4332", "3324", "3234", "2334", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "44332", "42334", "33244", "32344", "23344", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "444332", "434342", "423344", "332444", "323444", "233444", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "3332", "3332", "3233", "2333", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "43332", "33324", "33243", "32334", "23334", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "443332", "423334", "333244", "332344", "323344", "233344", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "4443332", "4343432", "4233344", "3332444", "3323444", "3233444", "2333444", "HI", "HI", "HI", "HI", "HI", "HI", "22", "22", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "422", "224", "224", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "4422", "4242", "2244", "2244", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "44422", "42424", "42244", "22444", "22444", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "322", "223", "223", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "4322", "3224", "2234", "2234", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "44322", "42423", "32244", "22344", "22344", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "444322", "424234", "422344", "322444", "223444", "223444", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "3322", "3232", "2233", "2233", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "43322", "32324", "32243", "22334", "22334", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "443322", "424233", "323244", "322344", "223344", "223344", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "4443322", "4242334", "4223344", "3232444", "3223444", "2233444", "2233444", "HI", "HI", "HI", "HI", "HI", "HI", "33322", "32323", "32233", "22333", "22333", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "433322", "333224", "323234", "322343", "223334", "223334", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "4433322", "4242333", "3323244", "3232344", "3223344", "2233344", "2233344", "HI", "HI", "HI", "HI", "HI", "HI", "44433322", "42423334", "42233344", "33232444", "32323444", "32233444", "22333444", "22333444", "HI", "HI", "HI", "HI", "HI", "222", "222", "222", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "4222", "2224", "2224", "2224", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "44222", "42422", "22244", "22244", "22244", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "444222", "424242", "422244", "222444", "222444", "222444", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "3222", "2223", "2223", "2223", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "43222", "32224", "22234", "22234", "22234", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "443222", "424232", "322244", "222344", "222344", "222344", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "4443222", "4242423", "4223244", "3222444", "2223444", "2223444", "2223444", "HI", "HI", "HI", "HI", "HI", "HI", "33222", "32322", "22233", "22233", "22233", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "433222", "323224", "322243", "222334", "222334", "222334", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "4433222", "4242332", "3232244", "3222443", "2223344", "2223344", "2223344", "HI", "HI", "HI", "HI", "HI", "HI", "44433222", "42424233", "42233244", "32322444", "32223444", "22233444", "22233444", "22233444", "HI", "HI", "HI", "HI", "HI", "333222", "323232", "322233", "222333", "222333", "222333", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "4333222", "3232324", "3232243", "3222433", "2223334", "2223334", "2223334", "HI", "HI", "HI", "HI", "HI", "HI", "44333222", "42423332", "32323244", "32322443", "32223443", "22233344", "22233344", "22233344", "HI", "HI", "HI", "HI", "HI", "444333222", "424242333", "422333244", "323232444", "323224443", "322233444", "222333444", "222333444", "222333444", "HI", "HI", "HI", "HI", "1", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "41", "14", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "441", "414", "144", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "4441", "4441", "4144", "1444", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "31", "13", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "431", "314", "134", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "4431", "4134", "3144", "1344", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "44431", "43414", "41344", "31444", "13444", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "331", "313", "133", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "4331", "3314", "3134", "1334", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "44331", "41334", "33144", "31344", "13344", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "444331", "434341", "413344", "331444", "313444", "133444", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "3331", "3331", "3133", "1333", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "43331", "33314", "33143", "31334", "13334", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "443331", "413334", "333144", "331344", "313344", "133344", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "4443331", "4343431", "4133344", "3331444", "3313444", "3133444", "1333444", "HI", "HI", "HI", "HI", "HI", "HI", "21", "12", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "421", "214", "124", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "4421", "4124", "2144", "1244", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "44421", "42414", "41244", "21444", "12444", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "321", "213", "123", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "4321", "3124", "2134", "1234", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "44321", "41324", "31244", "21344", "12344", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "444321", "424134", "412344", "312444", "213444", "123444", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "3321", "3123", "2133", "1233", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "43321", "32314", "31243", "21334", "12334", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "443321", "413324", "323144", "312344", "213344", "123344", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "4443321", "4241334", "4123344", "3231444", "3123444", "2133444", "1233444", "HI", "HI", "HI", "HI", "HI", "HI", "33321", "32313", "31233", "21333", "12333", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "433321", "333214", "323143", "312343", "213334", "123334", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "4433321", "4133324", "3313244", "3231443", "3123344", "2133344", "1233344", "HI", "HI", "HI", "HI", "HI", "HI", "44433321", "42413334", "41233344", "33132444", "32313444", "31233444", "21333444", "12333444", "HI", "HI", "HI", "HI", "HI", "221", "212", "122", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "4221", "2214", "2124", "1224", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "44221", "41224", "22144", "21244", "12244", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "444221", "424241", "412244", "221444", "212444", "122444", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "3221", "2213", "2123", "1223", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "43221", "31224", "22143", "21234", "12234", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "443221", "413224", "312244", "221344", "212344", "122344", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "4443221", "4242413", "4123244", "3122444", "2213444", "2123444", "1223444", "HI", "HI", "HI", "HI", "HI", "HI", "33221", "31223", "22133", "21233", "12233", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "433221", "323214", "312243", "221343", "212334", "122334", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "4433221", "4133224", "3223144", "3122443", "2213344", "2123344", "1223344", "HI", "HI", "HI", "HI", "HI", "HI", "44433221", "42424133", "41233244", "32231444", "31223444", "22133444", "21233444", "12233444", "HI", "HI", "HI", "HI", "HI", "333221", "323231", "312233", "221333", "212333", "122333", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "4333221", "3232314", "3223143", "3122433", "2213343", "2123334", "1223334", "HI", "HI", "HI", "HI", "HI", "HI", "44333221", "41333224", "32323144", "32231443", "31223443", "22133344", "21233344", "12233344", "HI", "HI", "HI", "HI", "HI", "444333221", "424241333", "412333244", "323231444", "322314443", "312233444", "221333444", "212333444", "122333444", "HI", "HI", "HI", "HI", "2221", "2221", "2122", "1222", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "42221", "22214", "22142", "21224", "12224", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "442221", "412224", "222144", "221244", "212244", "122244", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "4442221", "4242421", "4122244", "2221444", "2212444", "2122444", "1222444", "HI", "HI", "HI", "HI", "HI", "HI", "32221", "22213", "22132", "21223", "12223", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "432221", "312224", "222143", "221243", "212234", "122234", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "4432221", "4132224", "3122244", "2221443", "2212344", "2122344", "1222344", "HI", "HI", "HI", "HI", "HI", "HI", "44432221", "42424231", "41232244", "31222444", "22213444", "22123444", "21223444", "12223444", "HI", "HI", "HI", "HI", "HI", "332221", "312223", "222133", "221233", "212233", "122233", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "4332221", "3232214", "3122243", "2221433", "2212343", "2122334", "1222334", "HI", "HI", "HI", "HI", "HI", "HI", "44332221", "41332224", "32232144", "31222443", "22213443", "22123344", "21223344", "12223344", "HI", "HI", "HI", "HI", "HI", "444332221", "424242331", "412332244", "322231444", "312224443", "222133444", "221233444", "212233444", "122233444", "HI", "HI", "HI", "HI", "3332221", "3232321", "3122233", "2221333", "2212333", "2122333", "1222333", "HI", "HI", "HI", "HI", "HI", "HI", "43332221", "32323214", "32232143", "31222433", "22213433", "22123343", "21223334", "12223334", "HI", "HI", "HI", "HI", "HI", "443332221", "413332224", "323232144", "322231443", "312224433", "222133443", "221233344", "212233344", "122233344", "HI", "HI", "HI", "HI", "4443332221", "4242423331", "4123332244", "3231322444", "3222314443", "3122234443", "2221333444", "2212333444", "2122333444", "1222333444", "HI", "HI", "HI", "11", "11", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "411", "114", "114", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "4411", "4141", "1144", "1144", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "44411", "41414", "41144", "11444", "11444", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "311", "113", "113", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "4311", "3114", "1134", "1134", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "44311", "41413", "31144", "11344", "11344", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "444311", "414134", "411344", "311444", "113444", "113444", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "3311", "3131", "1133", "1133", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "43311", "31314", "31143", "11334", "11334", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "443311", "414133", "313144", "311344", "113344", "113344", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "4443311", "4141334", "4113344", "3131444", "3113444", "1133444", "1133444", "HI", "HI", "HI", "HI", "HI", "HI", "33311", "31313", "31133", "11333", "11333", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "433311", "333114", "313134", "311343", "113334", "113334", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "4433311", "4141333", "3313144", "3131344", "3113344", "1133344", "1133344", "HI", "HI", "HI", "HI", "HI", "HI", "44433311", "41413334", "41133344", "33131444", "31313444", "31133444", "11333444", "11333444", "HI", "HI", "HI", "HI", "HI", "211", "112", "112", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "4211", "2114", "1124", "1124", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "44211", "41412", "21144", "11244", "11244", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "444211", "414124", "411244", "211444", "112444", "112444", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "3211", "2113", "1123", "1123", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "43211", "31214", "21143", "11234", "11234", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "443211", "414132", "311244", "211344", "112344", "112344", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "4443211", "4141324", "4113244", "3112444", "2113444", "1123444", "1123444", "HI", "HI", "HI", "HI", "HI", "HI", "33211", "31312", "21133", "11233", "11233", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "433211", "313124", "311243", "211343", "112334", "112334", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "4433211", "4141332", "3131244", "3112443", "2113344", "1123344", "1123344", "HI", "HI", "HI", "HI", "HI", "HI", "44433211", "41413324", "41133244", "31312444", "31123444", "21133444", "11233444", "11233444", "HI", "HI", "HI", "HI", "HI", "333211", "313123", "311233", "211333", "112333", "112333", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "4333211", "3231314", "3131243", "3112433", "2113343", "1123334", "1123334", "HI", "HI", "HI", "HI", "HI", "HI", "44333211", "41413332", "32313144", "31312443", "31123443", "21133344", "11233344", "11233344", "HI", "HI", "HI", "HI", "HI", "444333211", "414133324", "411333244", "323131444", "313124443", "311233444", "211333444", "112333444", "112333444", "HI", "HI", "HI", "HI", "2211", "2121", "1122", "1122", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "42211", "21214", "21142", "11224", "11224", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "442211", "414122", "212144", "211244", "112244", "112244", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "4442211", "4141224", "4112244", "2121444", "2112444", "1122444", "1122444", "HI", "HI", "HI", "HI", "HI", "HI", "32211", "21213", "21132", "11223", "11223", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "432211", "312214", "212134", "211243", "112234", "112234", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "4432211", "4141322", "3112244", "2121344", "2112344", "1122344", "1122344", "HI", "HI", "HI", "HI", "HI", "HI", "44432211", "41413224", "41132244", "31122444", "21213444", "21123444", "11223444", "11223444", "HI", "HI", "HI", "HI", "HI", "332211", "313122", "212133", "211233", "112233", "112233", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "4332211", "3131224", "3112243", "2121334", "2112343", "1122334", "1122334", "HI", "HI", "HI", "HI", "HI", "HI", "44332211", "41413322", "31231244", "31122443", "21213344", "21123344", "11223344", "11223344", "HI", "HI", "HI", "HI", "HI", "444332211", "414133224", "411332244", "312312444", "311224443", "212133444", "211233444", "112233444", "112233444", "HI", "HI", "HI", "HI", "3332211", "3131223", "3112233", "2121333", "2112333", "1122333", "1122333", "HI", "HI", "HI", "HI", "HI", "HI", "43332211", "32323114", "31231243", "31122433", "21213334", "21123343", "11223334", "11223334", "HI", "HI", "HI", "HI", "HI", "443332211", "414133322", "322313144", "312312344", "311224433", "212133344", "211233344", "112233344", "112233344", "HI", "HI", "HI", "HI", "4443332211", "4141333224", "4113332244", "3223131444", "3123123444", "3112234443", "2121333444", "2112333444", "1122333444", "1122333444", "HI", "HI", "HI", "22211", "21212", "21122", "11222", "11222", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "422211", "222114", "212124", "211242", "112224", "112224", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "4422211", "4141222", "2212144", "2121244", "2112244", "1122244", "1122244", "HI", "HI", "HI", "HI", "HI", "HI", "44422211", "41412224", "41122244", "22121444", "21212444", "21122444", "11222444", "11222444", "HI", "HI", "HI", "HI", "HI", "322211", "222113", "212123", "211232", "112223", "112223", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "4322211", "3122214", "2212143", "2121234", "2112243", "1122234", "1122234", "HI", "HI", "HI", "HI", "HI", "HI", "44322211", "41413222", "31122244", "22121443", "21212344", "21122344", "11222344", "11222344", "HI", "HI", "HI", "HI", "HI", "444322211", "414132224", "411322244", "311222444", "221214443", "212123444", "211223444", "112223444", "112223444", "HI", "HI", "HI", "HI", "3322211", "3131222", "2212133", "2121233", "2112233", "1122233", "1122233", "HI", "HI", "HI", "HI", "HI", "HI", "43322211", "31312224", "31122243", "22121433", "21212334", "21122343", "11222334", "11222334", "HI", "HI", "HI", "HI", "HI", "443322211", "414133222", "312312244", "311222443", "221214433", "212123344", "211223344", "112223344", "112223344", "HI", "HI", "HI", "HI", "4443322211", "4141332224", "4113322244", "3123122444", "3112224443", "2212134443", "2121233444", "2112233444", "1122233444", "1122233444", "HI", "HI", "HI", "33322211", "31312223", "31122233", "22121333", "21212333", "21122333", "11222333", "11222333", "HI", "HI", "HI", "HI", "HI", "433322211", "323232114", "312312243", "311222433", "221214333", "212123334", "211223343", "112223334", "112223334", "HI", "HI", "HI", "HI", "4433322211", "4141333222", "3223213144", "3123122443", "3112224433", "2212134433", "2121233344", "2112233344", "1122233344", "1122233344", "HI", "HI", "HI", "44433322211", "41413332224", "41133322244", "32223131444", "31231224443", "31122244433", "22121334443", "21212333444", "21122333444", "11222333444", "11222333444", "HI", "HI", "111", "111", "111", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "4111", "1114", "1114", "1114", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "44111", "41411", "11144", "11144", "11144", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "444111", "414141", "411144", "111444", "111444", "111444", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "3111", "1113", "1113", "1113", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "43111", "31114", "11134", "11134", "11134", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "443111", "414131", "311144", "111344", "111344", "111344", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "4443111", "4141413", "4113144", "3111444", "1113444", "1113444", "1113444", "HI", "HI", "HI", "HI", "HI", "HI", "33111", "31311", "11133", "11133", "11133", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "433111", "313114", "311143", "111334", "111334", "111334", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "4433111", "4141331", "3131144", "3111443", "1113344", "1113344", "1113344", "HI", "HI", "HI", "HI", "HI", "HI", "44433111", "41414133", "41133144", "31311444", "31113444", "11133444", "11133444", "11133444", "HI", "HI", "HI", "HI", "HI", "333111", "313131", "311133", "111333", "111333", "111333", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "4333111", "3131314", "3131143", "3111433", "1113334", "1113334", "1113334", "HI", "HI", "HI", "HI", "HI", "HI", "44333111", "41413331", "31313144", "31311443", "31113443", "11133344", "11133344", "11133344", "HI", "HI", "HI", "HI", "HI", "444333111", "414141333", "411333144", "313131444", "313114443", "311133444", "111333444", "111333444", "111333444", "HI", "HI", "HI", "HI", "2111", "1112", "1112", "1112", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "42111", "21114", "11124", "11124", "11124", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "442111", "414121", "211144", "111244", "111244", "111244", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "4442111", "4141412", "4112144", "2111444", "1112444", "1112444", "1112444", "HI", "HI", "HI", "HI", "HI", "HI", "32111", "21113", "11123", "11123", "11123", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "432111", "312114", "211143", "111234", "111234", "111234", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "4432111", "4141321", "3112144", "2111443", "1112344", "1112344", "1112344", "HI", "HI", "HI", "HI", "HI", "HI", "44432111", "41414132", "41132144", "31112444", "21113444", "11123444", "11123444", "11123444", "HI", "HI", "HI", "HI", "HI", "332111", "313121", "211133", "111233", "111233", "111233", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "4332111", "3131214", "3112143", "2111433", "1112334", "1112334", "1112334", "HI", "HI", "HI", "HI", "HI", "HI", "44332111", "41413321", "31231144", "31112443", "21113443", "11123344", "11123344", "11123344", "HI", "HI", "HI", "HI", "HI", "444332111", "414141332", "411332144", "312311444", "311124443", "211133444", "111233444", "111233444", "111233444", "HI", "HI", "HI", "HI", "3332111", "3131312", "3112133", "2111333", "1112333", "1112333", "1112333", "HI", "HI", "HI", "HI", "HI", "HI", "43332111", "31313124", "31231143", "31112433", "21113433", "11123334", "11123334", "11123334", "HI", "HI", "HI", "HI", "HI", "443332111", "414133321", "313131244", "312311443", "311124433", "211133443", "111233344", "111233344", "111233344", "HI", "HI", "HI", "HI", "4443332111", "4141413332", "4113332144", "3131312444", "3123114443", "3111234443", "2111333444", "1112333444", "1112333444", "1112333444", "HI", "HI", "HI", "22111", "21211", "11122", "11122", "11122", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "422111", "212114", "211142", "111224", "111224", "111224", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "4422111", "4141221", "2121144", "2111442", "1112244", "1112244", "1112244", "HI", "HI", "HI", "HI", "HI", "HI", "44422111", "41414122", "41122144", "21211444", "21112444", "11122444", "11122444", "11122444", "HI", "HI", "HI", "HI", "HI", "322111", "212113", "211132", "111223", "111223", "111223", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "4322111", "3122114", "2121143", "2111432", "1112234", "1112234", "1112234", "HI", "HI", "HI", "HI", "HI", "HI", "44322111", "41413221", "31122144", "21211443", "21112443", "11122344", "11122344", "11122344", "HI", "HI", "HI", "HI", "HI", "444322111", "414141322", "411322144", "311122444", "212114443", "211123444", "111223444", "111223444", "111223444", "HI", "HI", "HI", "HI", "3322111", "3131221", "2121133", "2111332", "1112233", "1112233", "1112233", "HI", "HI", "HI", "HI", "HI", "HI", "43322111", "31312214", "31122143", "21211433", "21112433", "11122334", "11122334", "11122334", "HI", "HI", "HI", "HI", "HI", "443322111", "414133221", "312312144", "311122443", "212114433", "211123443", "111223344", "111223344", "111223344", "HI", "HI", "HI", "HI", "4443322111", "4141413322", "4113322144", "3122311444", "3111224443", "2121134443", "2111233444", "1112233444", "1112233444", "1112233444", "HI", "HI", "HI", "33322111", "31313122", "31122133", "21211333", "21112333", "11122333", "11122333", "11122333", "HI", "HI", "HI", "HI", "HI", "433322111", "313131224", "312312143", "311122433", "212114333", "211123433", "111223334", "111223334", "111223334", "HI", "HI", "HI", "HI", "4433322111", "4141333221", "3131312244", "3122311443", "3111224433", "2121134433", "2111233443", "1112233344", "1112233344", "1112233344", "HI", "HI", "HI", "44433322111", "41414133322", "41133322144", "31313122444", "31223114443", "31112244433", "21211334443", "21112333444", "11122333444", "11122333444", "11122333444", "HI", "HI", "222111", "212121", "211122", "111222", "111222", "111222", "HI", "HI", "HI", "HI", "HI", "HI", "HI", "4222111", "2121214", "2121142", "2111422", "1112224", "1112224", "1112224", "HI", "HI", "HI", "HI", "HI", "HI", "44222111", "41412221", "21212144", "21211442", "21112442", "11122244", "11122244", "11122244", "HI", "HI", "HI", "HI", "HI", "444222111", "414141222", "411222144", "212121444", "212114442", "211122444", "111222444", "111222444", "111222444", "HI", "HI", "HI", "HI", "3222111", "2121213", "2121132", "2111322", "1112223", "1112223", "1112223", "HI", "HI", "HI", "HI", "HI", "HI", "43222111", "31222114", "21212134", "21211432", "21112432", "11122234", "11122234", "11122234", "HI", "HI", "HI", "HI", "HI", "443222111", "414132221", "311222144", "212121344", "212114432", "211122443", "111222344", "111222344", "111222344", "HI", "HI", "HI", "HI", "4443222111", "4141413222", "4113222144", "3111222444", "2121213444", "2121124443", "2111223444", "1112223444", "1112223444", "1112223444", "HI", "HI", "HI", "33222111", "31312221", "21212133", "21211332", "21112332", "11122233", "11122233", "11122233", "HI", "HI", "HI", "HI", "HI", "433222111", "313122214", "311222143", "212121334", "212114332", "211122433", "111222334", "111222334", "111222334", "HI", "HI", "HI", "HI", "4433222111", "4141332221", "3123122144", "3111222443", "2121213344", "2121124433", "2111223443", "1112223344", "1112223344", "1112223344", "HI", "HI", "HI", "44433222111", "41414133222", "41133222144", "31223121444", "31112224443", "21212133444", "21211234443", "21112233444", "11122233444", "11122233444", "11122233444", "HI", "HI", "333222111", "313131222", "311222133", "212121333", "212113332", "211122333", "111222333", "111222333", "111222333", "HI", "HI", "HI", "HI", "4333222111", "3131312224", "3123123124", "3111222433", "2121213334", "2121124333", "2111223433", "1112223334", "1112223334", "1112223334", "HI", "HI", "HI", "44333222111", "41413332221", "31231231244", "31223121443", "31112224433", "21212133344", "21211234433", "21112233443", "11122233344", "11122233344", "11122233344", "HI", "HI", "444333222111", "414141333222", "411333222144", "312312312444", "312223114443", "311122244433", "212121333444", "212112334443", "211122333444", "111222333444", "111222333444", "111222333444", }; string getans(int a, int b, int c, int d, int e){ return (ans1[a*832+208*b+52*c+13*d+e]); } int D[10]; int ans[1000005]; string solve2(int K){ int S = 0; for(int i = 1; i <= 9; i++){ S+=D[i]; } for(int i = 0; i < S; i++){ ans[i] = 0; } int endnums = K-1; for(int i = 9; i >= 1; i--){ while(endnums > 0 && D[i] > 0){ ans[S-K+endnums] = i; endnums--; D[i]--; } if(D[i] > 0){ //ps(i); int space = (S-K+1)/D[i]; int num = D[i]; for(int j = 0; j < S-K+1 && D[i] > 0; j+=space){ ans[j] = i; D[i]--; } for(int j = 0; j < S; j++){ //cout << ans[j]; } //ps(); for(int j = 1; j < space; j++){ int curco = 0; for(int k = 1; k <= 9; k++){ curco+=D[k]; if(curco >= num){ //ps(k); int dig = 1; for(int l = j; l < S-K+1; l+=space){ while(D[dig] == 0) dig++; D[dig]--; ans[l] = dig; } break; } else{ } } } for(int j = 0; j < S; j++){ //cout << ans[j]; } //ps(); int dig = 1; for(int i = 0; i < S; i++){ if(ans[i] != 0) continue; while(D[dig] == 0) dig++; D[dig]--; ans[i] = dig; } } } string fans = ""; for(int i = 0; i < S; i++){ fans+=('0'+ans[i]); } return fans; } int main() { setIO(); // you should actually read the stuff at the bottom //ps(getans(1, 2, 3, 2, 5)); int T; cin >> T; for(int i = 0; i < T; i++){ int K; cin >> K; vector<bool> cases = {1, 1, 1, 1}; for(int i = 1; i <= 9; i++){ cin >> D[i]; if(i <= 4 && D[i] > 3) cases[1] = 0; if(i > 4 && D[i] != 0) cases[1] = 0; if(K != 2) cases[2] = 0; } if(cases[1] == 1){ ps(getans(D[1], D[2], D[3], D[4], K)); } else if(cases[2] == 1){ ps(solve2(K)); } } } /* stuff you should look for * int overflow, array bounds * special cases (n=1?), set tle * do smth instead of nothing and stay organized */

Compilation message (stderr)

devil.cpp: In function 'void io::setIn(std::__cxx11::string)':
devil.cpp:135:35: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result]
     void setIn(string s) { freopen(s.c_str(),"r",stdin); }
                            ~~~~~~~^~~~~~~~~~~~~~~~~~~~~
devil.cpp: In function 'void io::setOut(std::__cxx11::string)':
devil.cpp:136:36: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result]
     void setOut(string s) { freopen(s.c_str(),"w",stdout); }
                             ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
devil.cpp: In function 'std::__cxx11::string solve2(int)':
devil.cpp:3569:23: warning: array subscript is above array bounds [-Warray-bounds]
            while(D[dig] == 0) dig++;
                  ~~~~~^
devil.cpp:3591:20: warning: array subscript is above array bounds [-Warray-bounds]
         while(D[dig] == 0) dig++;
               ~~~~~^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...