Submission #866424

# Submission time Handle Problem Language Result Execution time Memory
866424 2023-10-26T06:16:11 Z vjudge1 Grudanje (COCI19_grudanje) C++17
70 / 70
648 ms 4812 KB
#ifndef Local
    #pragma GCC optimize("O3,unroll-loops")
#endif
#include <bits/stdc++.h>
#define int long long
#define pb push_back
#define lim 200000
using namespace std;
const int mod=1000000007ll;

void solve(){
    string s;
    cin>>s;
    int n=s.size();
    int Q;
    cin>>Q;
    pair<int,int>q[Q];
    for(auto&qq:q){
        cin>>qq.first>>qq.second;
        qq.first--,qq.second--;
    }
    int a[n];
    for(int i=0;i<n;i++){
        cin>>a[i];
        a[i]--;
    }
    int l=0,r=n,ans=-1;
    while(l<=r){
        int mid=(l+r)/2;
        string cur=s;
        for(int i=0;i<mid;i++){
            cur[a[i]]='.';
        }
        map<char,vector<int>>all;
        for(int i=0;i<n;i++){
            all[cur[i]].pb(i);
        }
        for(int i=0;i<Q;i++){
            for(char c='a';c<='z';c++){
                if(!all.count(c))continue;
                auto&v=all[c];
                auto pp=(lower_bound(v.begin(),v.end(),q[i].first));
                if(pp==v.end())continue;
                pp++;
                int p=(pp!=v.end()?(*pp):n);
                if(p<=q[i].second){
                    cerr<<q[i].second<<"\n";
                    l=mid+1;
                    goto fail;
                }
            }
        }
        ans=mid;
        r=mid-1;
        fail:;
    }
    cout<<ans<<"\n";
}

signed main(){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);cout.tie(NULL);
#ifdef Local  
    freopen(".in","r",stdin);
    freopen(".out","w",stdout);
#else

#endif
    int t=1;
    //cin>>t;
    while (t--)
    {
        solve();
    }
}
# Verdict Execution time Memory Grader output
1 Correct 2 ms 344 KB Output is correct
2 Correct 1 ms 348 KB Output is correct
3 Correct 1 ms 352 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 348 KB Output is correct
2 Correct 1 ms 576 KB Output is correct
3 Correct 1 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 13 ms 612 KB Output is correct
2 Correct 3 ms 600 KB Output is correct
3 Correct 1 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 12 ms 856 KB Output is correct
2 Correct 3 ms 348 KB Output is correct
3 Correct 1 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 12 ms 856 KB Output is correct
2 Correct 2 ms 348 KB Output is correct
3 Correct 1 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 83 ms 4728 KB Output is correct
2 Correct 36 ms 4812 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 89 ms 4596 KB Output is correct
2 Correct 36 ms 4808 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 648 ms 4468 KB Output is correct
2 Correct 148 ms 4708 KB Output is correct
3 Correct 37 ms 4760 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 575 ms 4588 KB Output is correct
2 Correct 171 ms 4548 KB Output is correct
3 Correct 36 ms 4804 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 495 ms 4608 KB Output is correct
2 Correct 160 ms 4716 KB Output is correct
3 Correct 35 ms 4760 KB Output is correct