Buongiorno stavo cercando di risolvere il problema Writing delle IOI del 2006 ma il mio codice riceve 55/100 con molti TLE e con un solo errore nel secondo subtask, se qualcuno avesse qualche consiglio da darmi mi farebbe un gran piacere, grazie per il vostro tempo vi lascio qui di seguito il mio codice!
#include <bits/stdc++.h>
#pragma GCC optimize("O3")
using namespace std;
int main(){
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
long long int g;
long long int N;
cin>>g>>N;
multiset<char>W;
for(int i=0;i<g;i++){
char c;
cin>>c;
W.insert(c);
}
string S;
cin>>S;
long long int ris=0;
int i=0;
while(i<N-g){
if(W.find(S[i])!=W.end()){
int j=i+1;
while(j<i+g && W.find(S[j])!=W.end()){
j++;
}
if(j==i+g){
ris++;
i++;
}
else{
i=j+1;
}
}
else{
i++;
}
}
cout<<ris;
}