/ SeriousOJ /

Record Detail

Time Exceeded


  
# Status Time Cost Memory Cost
#1 Accepted 1ms 540.0 KiB
#2 Accepted 1ms 540.0 KiB
#3 Accepted 1ms 540.0 KiB
#4 Accepted 1ms 540.0 KiB
#5 Accepted 12ms 672.0 KiB
#6 Accepted 12ms 684.0 KiB
#7 Accepted 148ms 1.68 MiB
#8 Accepted 151ms 1.848 MiB
#9 Accepted 852ms 10.016 MiB
#10 Accepted 5ms 660.0 KiB
#11 Accepted 7ms 796.0 KiB
#12 Time Exceeded ≥1100ms ≥11.23 MiB
#13 Time Exceeded ≥1101ms ≥11.25 MiB

Code

/*
 *   Copyright (c) 2025 Emon Thakur
 *   All rights reserved.
 */
#include<bits/stdc++.h>
using namespace std;
void solve()
{
    string s; cin >> s;
    int n = s.size();
    s = "#"+s;
    string ieee = "IEEELUSBCHAPTER";
    vector<int> need(26);
    for(auto e:ieee) need[e-'A']++;
    vector<int> chars;
    for(int i=0;i<26;i++) 
        if(need[i]) chars.push_back(i);

    vector<vector<int>> pfs(26,vector<int>(n+1));
    for(int i=1;i<=n;i++)
    {
        for(auto ch:chars)
        {
            pfs[ch][i] = pfs[ch][i-1] + (s[i]=='A'+ch);
        }
    }

    int ans = 1e9,lo,hi,mid,ind;
    for(int i=1;i<=n-14;i++)
    {
        int mxind = i;
        bool ok = true;
        for(auto c:chars)
        {
            lo = i, hi = n, mid, ind = 0;
            while(lo<=hi)
            {
                mid = (lo+hi)/2;
                if(pfs[c][mid]-pfs[c][i-1] >= need[c])
                {
                    ind = mid;
                    hi = mid-1;
                }else lo = mid+1;
            }
            if(ind) mxind = max(mxind , ind);
            else {ok=false; break;}
        }
        if(ok) ans = min(ans , mxind-i+1);
    }

    (ans==1e9)? cout<<-1<<'\n': cout<<ans<<'\n';
}
int main()
{
    ios::sync_with_stdio(false); cin.tie(nullptr);
    int t; cin >> t; while(t--) solve();
}

Information

Submit By
Type
Submission
Problem
P1174 IEEE LU SB CHAPTER
Contest
Lu IEEE testing round
Language
C++17 (G++ 13.2.0)
Submit At
2025-02-24 21:17:56
Judged At
2025-02-24 21:17:56
Judged By
Score
70
Total Time
≥1101ms
Peak Memory
≥11.25 MiB