Hi, I am trying to do 723B - Text Document Analysis and here is my code.
Code
When I input 37, which is the example input, the program just returns maxx and cnt. I don't understand this. Am I doing something wrong. BTW I am using GVim.
# | User | Rating |
---|---|---|
1 | tourist | 3985 |
2 | jiangly | 3814 |
3 | jqdai0815 | 3682 |
4 | Benq | 3529 |
5 | orzdevinwang | 3526 |
6 | ksun48 | 3517 |
7 | Radewoosh | 3410 |
8 | hos.lyric | 3399 |
9 | ecnerwala | 3392 |
9 | Um_nik | 3392 |
# | User | Contrib. |
---|---|---|
1 | cry | 169 |
2 | maomao90 | 162 |
2 | Um_nik | 162 |
4 | atcoder_official | 161 |
5 | djm03178 | 158 |
6 | -is-this-fft- | 157 |
7 | adamant | 155 |
8 | awoo | 154 |
8 | Dominater069 | 154 |
10 | luogu_official | 150 |
Hi, I am trying to do 723B - Text Document Analysis and here is my code.
int main() { ios::sync_with_stdio(0); cin.tie(0);
int n;
cin >> n;
string s;
getline(cin, s);
for(int i = 0; i < n; i++) {
if(s[i] == '_') {
s[i] = ' ';
}
}
stringstream ss(s);
bool ans = false;
string s1;
int maxx = -1;
int cnt = 0;
while(ss >> s1) {
if(s1[0] == '(') {
ans = true;
cnt++;
} else if(s1[0] == ')') {
ans = false;
cnt++;
} else {
if(ans) {
cnt++;
} else {
int i = s1.size();
maxx = max(maxx, i);
}
}
}
cout << maxx << " " << cnt;
}
When I input 37, which is the example input, the program just returns maxx and cnt. I don't understand this. Am I doing something wrong. BTW I am using GVim.
Name |
---|
After you do
cin >> n
, the pointer for your input is still on the same line as n. So thengetline
returns the remainder of that line, which is just a newline character. Changinggetline
tocin >> s
should fix the error, sinces
is guaranteed to not have spaces.Also, your code doesn't separate words if the separator is
(
or)
. Printings1
inside the while loop will demonstrate this.What if the problem had spaces, how would I input that? But thanks for the reply!
If the problem has spaces, your
getline
should work as long as you addcin >> ws
aftercin >> n
. This will take all the whitespace and discard it, which should put you at the start of the next line.But I think (or at least I hope) that the writers will make efforts to ensure you never need to do this. So far I haven't seen a CF problem requiring
cin >> ws
for input.Thanks!