QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#246891 | #4666. Delete And Win | Struct_Sec | WA | 1ms | 3328kb | C++14 | 1.1kb | 2023-11-11 11:32:57 | 2023-11-11 11:32:57 |
Judging History
answer
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=5e5+5;
int n,m;
int pos=1,cnt,ans,p=1e18;
vector<int>lt[30];
char c[N],s[N];
signed main(){
cin>>(s+1)>>(c+1);
n=strlen(c+1),m=strlen(s+1);
for(int i=n;i>=1;i--){
for(int j=c[i]-'a'+2;j<=26;j++){
lt[j].push_back(i);
}
}
ans=n;
for(int i=1;i<=m;i++){
int sum=0;
// cout<<i<<' '<<pos<<' ';
while(c[pos]>s[i] && pos<=n){
pos++;
sum++;
}
cnt+=sum;
// cout<<pos<<' '<<cnt<<endl;
if(pos>n) break;
p=i;
if(c[pos]<s[i]){
ans=min(ans,cnt);
break;
}
for(int j=1;j<=26;j++){
while(lt[j].size() && lt[j][lt[j].size()-1]<=pos){
lt[j].pop_back();
}
}
if(lt[s[i]-'a'+1].size()){
ans=min(ans,cnt+lt[s[i]-'a'+1][lt[s[i]-'a'+1].size()-1]-pos);
}
pos++;
}
// cout<<p<<endl;
if(p<m) ans=min(ans,cnt);
else{
if(p!=1e18){
ans=min(ans,n-m+1);
}
}
cout<<ans;
return 0;
}
/*
aaaaaaaaaa
haagaacabbbda
ahhhhhhhhhhhhhhflowerletterishuahua
heisanoierinhighschoolaffiliatedtorenminuniversityofchina
whqwillsingatninepm
dajiabujianbusan
*/
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 0
Wrong Answer
time: 1ms
memory: 3328kb
input:
pqsrpspqz pqrpqz
output:
0
result:
wrong answer 1st numbers differ - expected: '2', found: '0'