Advertisement
amine99

Untitled

Apr 7th, 2018
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.35 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. #define _ ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
  5. #define itloop(it,x) for(auto it=x.begin();it!=x.end();it++)
  6. #define reloop(i,e,b) for(auto i=e;i>=b;i--)
  7. #define loop(i,b,e) for(auto i=b;i<=e;i++)
  8. #define ALL(x) x.begin(),x.end()
  9. #define SZ(x) x.size()
  10. #define PB push_back
  11. #define MP make_pair
  12. #define F first
  13. #define S second
  14. typedef long long LL;
  15. typedef vector<int> VI;
  16.  
  17. LL dmg(string s) {
  18.    LL damage=1,cnt=0;
  19.    loop(i,0,s.length()-1) {
  20.       if(s[i] == 'S')
  21.          cnt += damage;
  22.       else
  23.          damage *= 2;
  24.    }
  25.    return cnt;
  26. }
  27.  
  28. string update(string s) {
  29.    bool updated=false;
  30.    reloop(i,s.length()-1,1) {
  31.       if(s[i] == 'S' && s[i-1] == 'C') {
  32.          swap(s[i],s[i-1]);
  33.          updated = true;
  34.          break;
  35.       }
  36.    }
  37.    if(updated)
  38.       return s;
  39.    else
  40.       return "0";
  41. }
  42.  
  43. void solve(string s,LL d,int i) {
  44.    int cnt = 0;
  45.    if(dmg(s) <= d)
  46.       cout << "Case #" << i << ": 0\n";
  47.    else {
  48.       while(s != "0" && dmg(s) > d) {
  49.          s = update(s);
  50.          cnt++;
  51.       }
  52.       if(s != "0")
  53.          cout << "Case #" << i << ": " << cnt << "\n";
  54.       else
  55.          cout << "IMPOSSIBLE\n";
  56.    }
  57. }
  58.  
  59. LL t,d;
  60. string s;
  61.  
  62. int main() {
  63.    cin >> t;
  64.    loop(i,1,t) {
  65.       cin >> d >> s;
  66.       solve(s,d,i);
  67.    }
  68. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement