diff --git a/main.cpp b/main.cpp index c3cce31f0c4aa57468f5ef3f9e86a3ea4d11db4e..6310b53e4b2c5d3c0c2f791543a7a90c77eccd09 100644 --- a/main.cpp +++ b/main.cpp @@ -21,13 +21,25 @@ int main(int argc, char ** argv) assert(argc>=3); std::uniform_int_distribution<unsigned int> dist(0, 1000000000); std::random_device urandom("/dev/urandom"); - int seed = argv[2][0]?atoi(argv[2]):dist(urandom); - srand(seed); + int n = atoi(argv[1]); vector<int> in(2*n); - fo(i,n) in[i] = i; - fo(i,n) in[n+i] = i; - random_shuffle(in.begin(), in.end()); + int seed = 0; + + if('A' <= argv[2][0] and argv[2][0] <= 'Z') + { + assert(strlen(argv[2]) == 2*n); + fo(i, 2*n) + in[i] = argv[2][i] - 'A'; + } + else + { + seed = argv[2][0]?atoi(argv[2]):dist(urandom); + srand(seed); + fo(i,n) in[i] = i; + fo(i,n) in[n+i] = i; + random_shuffle(in.begin(), in.end()); + } fflush(stdout); int old_stdout = dup(1);