题意:
保证是一组非递减的字符串。只可以删除连续的后缀
思路:
从后往前减少字符。暴力就好了。
挺水的。然而做完C去看动漫了。。
#include <cstdio>
#include <string>
#include <cstring>
#include <algorithm>
#include <iostream>
const int maxn=1e6+5;
using namespace std;
string str[maxn];
int n ;
int a[maxn];
void solve(int pos)
{
for(int i = 1 ; i < maxn; i++)
{
if(i == a[pos]+1)
return;
if(i == a[pos+1]+1)
{
a[pos] = a[pos+1];
return;
}
if(str[pos][i] > str[pos+1][i])
{
a[pos] = i-1;
return;
}
else if(str[pos][i] < str[pos+1][i])
return;
}
}
int main()
{
cin>>n;
for(int i = 1; i <= n; i++)
{
cin>>str[i];
a[i]=(str[i].size())-1;
}
for(int i = n-1 ; i >= 1; i--)
solve(i);
for(int i = 1; i <=n ; i++)
{
for(int j = 0; j <=a[i]; j++)
cout<< str[i][j];
cout<< "\n";
}
}