+ 1
C++ algorithm help
I am preparing for the national-wide programming contest after being 4th in the regional. I saw an interesting problem: " There are n computers in a row. There are contestants from 3 citied: A B and C. If you how many contestants are from each city and where are contestants from A sitting, place the contestants from B and C in that way that two student form the same city cannot stay one to other. If there is no answer output -1 Example: 3 2 2(number of students from each city) 2 5 7(positions of the students from A) Output: BABCACA " My code: https://code.sololearn.com/cVhMY51t5yen/?ref=app
8 ответов
+ 3
Shadow Why do u put "int, char**". Sorry, I am putting a lot of effort on it, just need help somewhere :)
+ 2
@Shadow In most cases it "Runtime error(executed code other than 0)" or wrong answer
+ 2
Shadow can you help me, please?
+ 2
Shadow Also,why do give value to variables using var{}
+ 1
You posted the exact same question earlier:
[Edit] Deleted Thread
Please don't open duplicate threads. One thread is sufficient. At least delete the old one if you decide to repost your question.
Besides, your code works for the sample input, and there is no other explanation. What is the issue?
+ 1
Well, maybe you have figured something out on your own by now, but while your code has some minor issues, e.g. "arr" is only allocated for 'a' elements instead of "total" elements, the biggest problem is that there are just a lot of situations where none of your numerous conditionals match, although it should be possible to fill the gaps. Some cases:
1 1 3 2
1 1 3 4
3 3 3 1 3 5
If you handtraced any of the simpler ones, you would immeditaley see that your construction logic has gaps. If you have the time, I would suggest to "get back to the drawing board" and try to find a smarter approach that doesn't need as many hardcoded conditionals.
That being said, I came up with an attempt of my own. It's probably not the ultimate solution either, but it should do the trick, although I haven't tested it extensively. Feel free to study the code if you want:
https://code.sololearn.com/cSx07q93dnae/?ref=app
+ 1
The main() function has at least two valid standard signatures:
https://en.cppreference.com/w/cpp/language/main_function
The int (usually called argc) and char** (usually called argv) arguments provide access to command line arguments, i.e. arguments that are passed into the program when it is started. This is helpful if your program is called from another process.
https://stackoverflow.com/questions/3024197/what-does-int-argc-char-argv-mean
Since I don't need them on SoloLearn, I omit the names (C++ allows anonymous function parameters), but you might as well write:
int main()
{
// ...
}
0
The curly braces are uniform initialization syntax. See
https://mbevin.wordpress.com/2012/11/16/uniform-initialization/
for an explanation and
https://softwareengineering.stackexchange.com/questions/133688/is-c11-uniform-initialization-a-replacement-for-the-old-style-syntax
for some discussion regarding it.
Writing just
type identifier{};
will default-initialize the variable with whatever value is considered the default for the specific type, e.g. 0 for an integer or nullptr for pointers. C++ is not going to perform that default-initialization for you in all cases.