Submission #1607743
Source Code Expand
#include <bits/stdc++.h> using namespace std; #define rep(i,x,y) for(int i=(x);i<(y);++i) #define debug(x) #x << "=" << (x) #ifdef DEBUG #define _GLIBCXX_DEBUG #define print(x) std::cerr << debug(x) << " (L:" << __LINE__ << ")" << std::endl #else #define print(x) #endif const int inf=1e9; const int64_t inf64=1e18; const double eps=1e-9; template <typename T> ostream &operator<<(ostream &os, const vector<T> &vec){ os << "["; for (const auto &v : vec) { os << v << ","; } os << "]"; return os; } using i64=int64_t; string increment(string s){ ++s[0]; rep(i,0,s.size()-1) if(s[i]=='z'+1){ ++s[i+1]; s[i]='a'; } if(s.back()=='z'+1){ s.back()='a'; s+="a"; } return s; } void solve(){ string A; cin >> A; static int min_index[200000][26]; fill_n((int*)min_index,200000*26,inf); min_index[A.size()-1][A.back()-'a']=A.size()-1; for(int i=int(A.size())-2; i>=0; --i){ rep(c,0,26) min_index[i][c]=min_index[i+1][c]; min_index[i][A[i]-'a']=i; } static int memo[200001]={}; static bool done[200001]={}; function<int(int)> rec=[&](int index){ int &res=memo[index]; if(done[index]) return res; done[index]=true; if(index==A.size()) return res=1; int ma=0; rep(c,0,26) ma=max(ma,min_index[index][c]); if(ma==inf) return res=1; return res=rec(ma+1)+1; }; function<void(int)> ans=[&](int index){ int impossible_len=rec(index); if(impossible_len==1) rep(c,0,26) if(min_index[index][c]==inf){ cout << char('a'+c) << endl; return; } rep(c,0,26){ int index_=min_index[index][c]+1; if(rec(index_)==impossible_len-1){ cout << char('a'+c); ans(index_); return; } } }; ans(0); } int main(){ std::cin.tie(0); std::ios::sync_with_stdio(false); cout.setf(ios::fixed); cout.precision(16); solve(); return 0; }
Submission Info
Submission Time | |
---|---|
Task | E - Don't Be a Subsequence |
User | walkre |
Language | C++14 (GCC 5.4.1) |
Score | 600 |
Code Size | 2217 Byte |
Status | AC |
Exec Time | 16 ms |
Memory | 22292 KB |
Judge Result
Set Name | Sample | All | ||||
---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 600 / 600 | ||||
Status |
|
|
Set Name | Test Cases |
---|---|
Sample | sample1.txt, sample2.txt, sample3.txt |
All | sample1.txt, sample2.txt, sample3.txt, 1.txt, 10.txt, 11.txt, 12.txt, 13.txt, 14.txt, 15.txt, 16.txt, 17.txt, 18.txt, 19.txt, 2.txt, 20.txt, 21.txt, 22.txt, 23.txt, 24.txt, 25.txt, 26.txt, 27.txt, 28.txt, 29.txt, 3.txt, 30.txt, 4.txt, 5.txt, 6.txt, 7.txt, 8.txt, 9.txt, sample1.txt, sample2.txt, sample3.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
1.txt | AC | 7 ms | 20608 KB |
10.txt | AC | 15 ms | 22036 KB |
11.txt | AC | 15 ms | 22036 KB |
12.txt | AC | 15 ms | 22036 KB |
13.txt | AC | 15 ms | 22036 KB |
14.txt | AC | 15 ms | 22036 KB |
15.txt | AC | 15 ms | 22036 KB |
16.txt | AC | 15 ms | 22036 KB |
17.txt | AC | 15 ms | 22036 KB |
18.txt | AC | 15 ms | 22164 KB |
19.txt | AC | 16 ms | 22164 KB |
2.txt | AC | 7 ms | 20608 KB |
20.txt | AC | 15 ms | 22292 KB |
21.txt | AC | 15 ms | 22292 KB |
22.txt | AC | 15 ms | 22292 KB |
23.txt | AC | 15 ms | 22292 KB |
24.txt | AC | 14 ms | 21908 KB |
25.txt | AC | 13 ms | 21396 KB |
26.txt | AC | 13 ms | 21012 KB |
27.txt | AC | 13 ms | 21012 KB |
28.txt | AC | 13 ms | 21012 KB |
29.txt | AC | 13 ms | 21012 KB |
3.txt | AC | 8 ms | 20608 KB |
30.txt | AC | 13 ms | 20884 KB |
4.txt | AC | 8 ms | 20608 KB |
5.txt | AC | 11 ms | 21328 KB |
6.txt | AC | 11 ms | 21328 KB |
7.txt | AC | 15 ms | 22036 KB |
8.txt | AC | 15 ms | 22036 KB |
9.txt | AC | 15 ms | 22036 KB |
sample1.txt | AC | 7 ms | 20608 KB |
sample2.txt | AC | 7 ms | 20608 KB |
sample3.txt | AC | 7 ms | 20608 KB |