Competitive programming problem statements are often written with a lot of extraneous details to make them sound more realistic. This can make it difficult to extract what the problems is asking. One technique is to read the problem in reverse: look at the sample input/output, then the output description, then the input description, then the last part of the problem description. At this point you'll probably have a good enough idea of what the problem is asking that you can just skim through the details at the beginning of the problem. Like everything else, reading problem statement requires practice. Fluent English is not the key to quickly understand statement. I have seen many people who has English as mother-tongue but have trouble understanding (maybe badly written) statements. I think the key to understand statement is: Identifying and ignoring stories that are irrelevant Take note of key points in the statement. Guess what the problem setter means. This can be done by quickly read through statement, then trying to guess what is asked by reading input/output descriptions.