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.
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.
| № | Пользователь | Рейтинг |
|---|---|---|
| 1 | Benq | 3792 |
| 2 | VivaciousAubergine | 3647 |
| 3 | Kevin114514 | 3603 |
| 4 | jiangly | 3583 |
| 5 | turmax | 3559 |
| 6 | tourist | 3541 |
| 7 | strapple | 3515 |
| 8 | ksun48 | 3461 |
| 9 | dXqwq | 3436 |
| 10 | Otomachi_Una | 3413 |
| Страны | Города | Организации | Всё → |
| № | Пользователь | Вклад |
|---|---|---|
| 1 | Qingyu | 157 |
| 2 | adamant | 153 |
| 3 | Um_nik | 147 |
| 4 | Proof_by_QED | 146 |
| 5 | Dominater069 | 145 |
| 6 | errorgorn | 142 |
| 7 | cry | 139 |
| 8 | YuukiS | 135 |
| 9 | TheScrasse | 134 |
| 10 | chromate00 | 133 |
| Название |
|---|



After you do
cin >> n, the pointer for your input is still on the same line as n. So thengetlinereturns the remainder of that line, which is just a newline character. Changinggetlinetocin >> sshould fix the error, sincesis guaranteed to not have spaces.Also, your code doesn't separate words if the separator is
(or). Printings1inside 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
getlineshould work as long as you addcin >> wsaftercin >> 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 >> wsfor input.Thanks!