fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. typedef long long ll;
  4. #define Shoyo ios_base::sync_with_stdio(0);cin.tie(NULL);
  5. #define ff first
  6. #define ss second
  7. #define pii pair<ll,ll>
  8. #define all(v) v.begin(), v.end()
  9. #define allr(v) v.rbegin(), v.rend()
  10. #define cl(x,y) (x + y - 1) / y
  11. #define el "\n"
  12. ll Mod=998244353;
  13. const pii adj[]={{0,1},{1,0},{-1,0},{0,-1}};
  14. const ll N=2e5+5,M=1e5+7;
  15. ll n;
  16. ll dp[N];
  17. ll val[N];
  18. map<ll,ll> mp;
  19. ll sol(ll i) {
  20. if (i==n)return 0;
  21. ll &res=dp[i];
  22. if (~res)return res;
  23. res=1;
  24. for (ll j=i+1;j<n;j++) {
  25. if (val[j]==val[i]+1) {
  26. res=max(res,1+sol(j));
  27. }
  28. }
  29. return res;
  30. }
  31. void dfs(ll i) {
  32. cout<<mp[val[i]]<<" ";
  33. for (ll j=i+1;j<n;j++) {
  34. if (val[j]==val[i]+1) {
  35. dfs(j);
  36. break;
  37. }
  38. }
  39. }
  40. void solve() {
  41. cin>>n;
  42. memset(dp,-1,sizeof(dp));
  43. for(ll i=0;i<n;i++) {
  44. cin>>val[i];
  45. mp[val[i]]=i+1;
  46. }
  47. ll best=0,ii=0;
  48. for (ll i=0;i<n;i++) {
  49. if (sol(i)>best) {
  50. best=sol(i);
  51. ii=i;
  52. }
  53. }
  54. cout<<best<<el;
  55. dfs(ii);
  56.  
  57. }
  58. int main(){
  59. Shoyo;
  60. ll t=1;
  61. // if(!(cin >> t)) return 0;
  62. while(t--) {
  63. solve();
  64. }
  65. return 0;
  66. }
  67.  
Success #stdin #stdout 0.01s 6140KB
stdin
Standard input is empty
stdout
0
0