Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- int main() {
- string zoo;
- cin >> zoo;
- int cnt = 1, cnt2 = 1;
- map<int, int> answer;
- stack<pair<char, int>> v;
- vector<int> idx(zoo.length()), ans;
- for(int i = 0; i < zoo.length(); ++i){
- if(zoo[i] >= 'a' && zoo[i] <= 'z'){
- idx[i] = cnt;
- cnt++;
- }else{
- idx[i] = cnt2;
- cnt2++;
- }
- }
- for(int i = 0; i < zoo.length(); ++i){
- if(v.empty()){
- v.push({zoo[i], idx[i]});
- }else if(v.top().first - 'a' == zoo[i] - 'A'){
- if(v.top().first >= 'A' && v.top().first <= 'Z'){
- answer[v.top().second] = idx[i];
- }else{
- answer[idx[i]] = v.top().second;
- }
- v.pop();
- }else if (v.top().first - 'A' == zoo[i] - 'a'){
- if(v.top().first >= 'A' && v.top().first <= 'Z'){
- answer[v.top().second] = idx[i];
- }else{
- answer[idx[i]] = v.top().second;
- }
- v.pop();
- }else{
- v.push({zoo[i], idx[i]});
- }
- }
- if(v.empty()){
- cout << "Possible\n";
- for(auto el : answer){
- cout << el.second << ' ';
- }
- }else{
- cout << "Impossible\n";
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment