QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#332340#7877. Balanced ArrayTerdyWA 1ms7564kbC++141.3kb2024-02-19 14:36:462024-02-19 14:36:47

Judging History

This is the latest submission verdict.

  • [2024-02-19 14:36:47]
  • Judged
  • Verdict: WA
  • Time: 1ms
  • Memory: 7564kb
  • [2024-02-19 14:36:46]
  • Submitted

answer

# include <bits/stdc++.h>

using namespace std;

# define ull unsigned long long 

const int N = 2e6 + 5 , base = 233 , mod = 1e9 + 7;
int n , a[N] , ans[N];
int ha[N] , pw[N*9];

int trans(string s)
{
    int res = 0;
    for(int i = 0; i < s.length(); i++)
    {
        if('0' <= s[i] && s[i] <= '9') res = res * 62 + s[i] - '0';
        if('a' <= s[i] && s[i] <= 'z') res = res * 62 + s[i] - 'a' + 10;
        if('A' <= s[i] && s[i] <= 'Z') res = res * 62 + s[i] - 'A' + 10 + 26;
    }
    return res;
}

ull Ha(int l , int r)
{
    return ha[r] - ha[l - 1] * pw[r - l + 1];
}

bool check(int k , int l)
{
    cout << Ha(1 , l - 2 * k) + Ha(2 * k + 1 , l) << ' ' << 2 * Ha(k + 1 , l - k) << '\n';
    return Ha(1 , l - 2 * k) + Ha(2 * k + 1 , l) == 2 * Ha(k + 1 , l - k);
}

int main()
{
    cin >> n;
    pw[0] = 1;
    for(int i = 1; i <= 9 * n; i++) pw[i] = pw[i - 1] * base;
    for(int i = 1; i <= n; i++)
    {
        string s;
        cin >> s;
        a[i] = trans(s);
        ha[i] = ha[i - 1] * base + a[i];
    }
    for(int i = 1 , j = 1; i <= (n - 1) / 2 && j <= n; i++)
    {
        while(i > (j - 1) / 2) j++;
        while(check(i , j) && j <= n) ans[j] = 1 , j++;
    }
    for(int i = 1; i <= n; i++) cout << ans[i];
    return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 0
Wrong Answer
time: 1ms
memory: 7564kb

input:

3
1 2 3

output:

4 4
18446744073696793936 938
001

result:

wrong answer 1st lines differ - expected: '001', found: '4 4'