Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include "optimization.h"
- using namespace std;
- char s[100000];
- vector<long long> hashs, p;
- long long mod = 9223372036854775783;
- long long len = 0;
- void myHash () {
- long long result = 0;
- p[0] = 1;
- for(long long i = 1; i < len; i++) {
- p[i] = (p[i-1] * 67) % mod;
- }
- hashs[0] = s[0];
- for (long long i = 1; i < len; i++) {
- hashs[i] = (hashs[i-1] + (s[i]*p[i])%mod) % mod;
- }
- }
- int main() {
- //freopen ("1.txt", "r", stdin);
- s[len] = getChar();
- while (s[len] >= 'a' && s[len] <= 'z') {
- len++;
- s[len] = getChar();
- }
- long long n = readInt();
- long long l1, r1, l2, r2;
- hashs.resize(len);
- p.resize(len);
- myHash();
- for (long long i = 0; i < n; i ++) {
- l1 = readInt() - 1;
- r1 = readInt() - 1;
- l2 = readInt() - 1;
- r2 = readInt() - 1;
- if (l1 > l2) {
- swap(l1, l2);
- swap(r1, r2);
- }
- long long h1 = hashs[r1];
- if (l1) h1 = (h1 - hashs[l1-1] + mod) % mod;
- long long h2 = hashs[r2];
- if (l2) h2 = (h2 - hashs[l2-1] + mod) % mod;
- if ((h1 * p[l2-l1]) % mod == h2){
- writeWord("Yes\n");
- }
- else {
- writeWord("No\n");
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement