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.
№ | Пользователь | Рейтинг |
---|---|---|
1 | tourist | 3993 |
2 | jiangly | 3743 |
3 | orzdevinwang | 3707 |
4 | Radewoosh | 3627 |
5 | jqdai0815 | 3620 |
6 | Benq | 3564 |
7 | Kevin114514 | 3443 |
8 | ksun48 | 3434 |
9 | Rewinding | 3397 |
10 | Um_nik | 3396 |
Страны | Города | Организации | Всё → |
№ | Пользователь | Вклад |
---|---|---|
1 | cry | 167 |
2 | Um_nik | 163 |
3 | maomao90 | 162 |
3 | atcoder_official | 162 |
5 | adamant | 159 |
6 | -is-this-fft- | 158 |
7 | awoo | 156 |
8 | TheScrasse | 154 |
9 | Dominater069 | 153 |
10 | nor | 152 |
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.
Название |
---|
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!