chacoderのブログ

競技プログラミングそのほか

Codeforces 1451B - Non-Substring Subsequence

考察

lからrまでの文字列と同じ部分文字列で連続でないものがあればYESなければNOを出力します。
lがsの左端でなくlよりも左にS.at(l)と同じ文字があるかrがsの右端でなくrよりも右にS.at(r)と同じ文字があれば要件にあう文字列がありますのでYESを出力します。

そのまま実装します。

提出コード

#include <bits/stdc++.h>
using namespace std;

int main(){
  int t;
  cin>>t;
  for(int i=0;i<t;i++){
    int n;
    int q;
    cin>>n>>q;
    string s;
    cin>>s;
    for(int j=0;j<q;j++){
      int l;
      int r;
      cin>>l>>r;
      l--;
      r--;
      int flag=0;
      if(l != 0){
        for(int k=0;k<l;k++){
          if(s.at(k) == s.at(l)){
            flag=1;
          }
        }
      }
      if(r != n-1){
        for(int k=r+1;k<n;k++){
          if(s.at(k) == s.at(r)){
            flag=1;
          }
        }
      }
      if(flag==1){
        cout<<"YES"<<endl;
      }
      else{
        cout<<"NO"<<endl;
      }
    } 
  }
  return 0;
}