Advertisement
Guest User

Untitled

a guest
Oct 15th, 2019
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.03 KB | None | 0 0
  1.    #pragma GCC omptimize("unroll-loops")
  2.     #pragma GCC omptimize("игорь говно")
  3.     #pragma GCC optimize("no-stack-protector")
  4.     #pragma comment(linker, "/STACK:1000000000")
  5.  
  6.    
  7. #include <iostream>
  8. #include <cmath>
  9. #include <iostream>
  10. #include <vector>
  11. #include <algorithm>
  12. #include <string>
  13. #include <set>
  14. #include <map>
  15. #include <list>
  16. #include <time.h>
  17. #include <math.h>
  18. #include <random>
  19. #include <deque>
  20. #include <queue>
  21. #include <cassert>
  22. #include <unordered_map>
  23. #include <unordered_set>
  24. #include <iomanip>
  25. #include <bitset>
  26. #include <sstream>
  27. #include <chrono>
  28.     #define LOCAL
  29.     #define fori(i, r, x) for(int i = r; i < x; i++)
  30.     #define eb emplace_back
  31.     #define lb lower_bound
  32.     #define ub upper_bound
  33.     #define er equal_range
  34.     #define fi first
  35.     #define se second
  36.  
  37.     using namespace std;
  38.  
  39.     typedef long long int lli;
  40.     typedef long long ll;
  41.     typedef long double ld;
  42.     typedef pair<int, int> pii;
  43.     typedef pair<ll,ll> pll;
  44.     typedef pair<ld,ld> pld;
  45.     typedef vector<int> vi;
  46.     typedef vector<ll> vll;
  47.     typedef vector<ld> vld;
  48.     typedef vector<vector<int>> vvi;
  49.  
  50.     const int INF32 = 2009000999;
  51.     const ll INF64 = 4e18;
  52.     const int sz = 1e6;
  53.     const int mod = 1e9+7;
  54.     const long double EPS = 1e-18;
  55.     const int base = 1000*1000*1000;
  56.     const int p = 31;
  57.    
  58.  
  59.     string s;
  60.     ll cnt = 0, n;
  61.    
  62.     ll haash(string a, int x) {
  63.         long long hashh = 0, p_pow = 1;
  64.         for (int j=x; j<a.size(); j++)  {
  65.             hashh += (a[j] - 'a' + 1) * p_pow;
  66.             p_pow *= p;
  67.         }
  68.         for (int j=0; j<x; j++)  {
  69.             hashh += (a[j] - 'a' + 1) * p_pow;
  70.             p_pow *= p;
  71.         }
  72.         return hashh;
  73.     }
  74.  
  75.     ll b, c;
  76.    inline void r() {
  77.         cin >> n;
  78.         cin >> s;
  79.         string s1(s);
  80.         reverse(s1.begin(), s1.end());
  81.        
  82.         b = haash(s, 0);
  83.        // cerr << b << endl;
  84.         c = haash(s1, 0);
  85.        // for(int i = 0; i < s.size() - 1; i++) step();
  86.  
  87.        // cerr << c << endl;
  88.       //  cerr << haash(s) << endl;
  89.         if (b == c) {
  90.             cout << "0";
  91.             return;
  92.         }
  93.         ll k = 0;
  94.         cnt = 0;
  95.         ll ans = 0;
  96.         ll cur;
  97.         for(int i = 0; i < s.size(); i++) {
  98.             //step();
  99.            // cerr << s << endl;
  100.             cur = haash(s,i);
  101.            // cerr << cur << endl;
  102.             if (cur == c) {
  103.                 ans = cnt + 1;
  104.                 cout << ans;
  105.                 return;
  106.             }
  107.             else if ((cur == b) && (i != 0)){
  108.                 cout << -1;
  109.                 return;
  110.             }
  111.             else if (i != 0){
  112.                 cnt++;
  113.             }
  114.         }
  115.     }
  116.  
  117.     int main(){
  118.         ios_base::sync_with_stdio(false);
  119.         cin.tie(0);
  120.         cout.tie(0);
  121.  
  122.         #ifndef LOCAL
  123.             freopen("input.txt", "r", stdin);
  124.             freopen("output.txt", "w", stdout);
  125.         #endif
  126.        r();
  127.         return 0;
  128.        
  129.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement