Algorithm


A. Where Are My Flakes?
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output

One morning the Cereal Guy found out that all his cereal flakes were gone. He found a note instead of them. It turned out that his smart roommate hid the flakes in one of n boxes. The boxes stand in one row, they are numbered from 1 to n from the left to the right. The roommate left hints like "Hidden to the left of the i-th box" ("To the left of i"), "Hidden to the right of the i-th box" ("To the right of i"). Such hints mean that there are no flakes in the i-th box as well. The Cereal Guy wants to know the minimal number of boxes he necessarily needs to check to find the flakes considering all the hints. Or he wants to find out that the hints are contradictory and the roommate lied to him, that is, no box has the flakes.

Input

The first line contains two integers n and m (1 ≤ n ≤ 1000, 0 ≤ m ≤ 1000) which represent the number of boxes and the number of hints correspondingly. Next m lines contain hints like "To the left of i" and "To the right of i", where i is integer (1 ≤ i ≤ n). The hints may coincide.

Output

The answer should contain exactly one integer — the number of boxes that should necessarily be checked or "-1" if the hints are contradictory.

Examples
input
Copy
2 1
To the left of 2
output
Copy
1
input
Copy
3 2
To the right of 1
To the right of 2
output
Copy
1
input
Copy
3 1
To the left of 3
output
Copy
2
input
Copy
3 2
To the left of 2
To the right of 1
output
Copy
-1

 

Code Examples

#1 Code Example with C++ Programming

Code - C++ Programming

#include <cstdio>
#include <iostream>
#include <string>

int main(){

    int n(0), m(0); scanf("%d %d\n", &n, &m);

    int leftBoundary(1), rightBoundary(n);

    while(m--){

        std::string hint; getline(std::cin, hint);

        int currentBox(0),index(hint.size() - 1);

        while(hint[index] != ' '){--index;}
        while(++index < hint.size()){currentBox = 10 * currentBox + (hint[index] - '0');}

        if(hint.find("left") != std::string::npos && rightBoundary > currentBox - 1){rightBoundary = currentBox - 1;}
        else if(hint.find("right") != std::string::npos && leftBoundary < currentBox + 1){leftBoundary = currentBox + 1;}
    }

    if(rightBoundary < leftBoundary){puts("-1">;}
    else{std::cout<< rightBoundary - leftBoundary + 1 << std::endl;}

    return 0;
}
Copy The Code & Try With Live Editor

Input

x
+
cmd
2 1
To the left of 2

Output

x
+
cmd
1
Advertisements

Demonstration


Codeforces Solution-A. Where Are My Flakes?-Solution in C, C++, Java, Python

Previous
Codeforces solution 1080-B-B. Margarite and the best present codeforces solution
Next
CodeChef solution DETSCORE - Determine the Score CodeChef solution C,C+