fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. #define int long long
  5. #define fi first
  6. #define se second
  7. #define pb push_back
  8. #define all(v) v.begin(),v.end()
  9. #define mk make_pair
  10. typedef pair<int,int> pii;
  11. const int maxn=1e6,MOD=1e9+7,INF=1e18;
  12. int a[maxn],b[maxn];
  13. vector<int> adj[maxn];
  14. int32_t main(){
  15. ios::sync_with_stdio(false);
  16. cin.tie(0);cout.tie(0);
  17. int n,k;
  18. cin >> n >> k;
  19. for(int i=1;i<=k;i++){
  20. cin >> b[i];
  21. }
  22. for(int i=0;i<=n;i++){
  23. adj[i].pb(i);
  24. a[i] = i;
  25. }
  26. int l=0,r=n;
  27. for(int i=1;i<=k;i++){
  28. if((a[b[i]]-l) <= (r-a[b[i]])){
  29. int d = 1;
  30. for(int j=a[b[i]]-1;j>=l;j--){
  31. for(int u : adj[j]){
  32. adj[a[b[i]]+d].pb(u);
  33. a[u] = a[b[i]] + d;
  34. }
  35. adj[j].clear();
  36. d++;
  37. }
  38. l = a[b[i]];
  39. }else{
  40. int d = 1;
  41. for(int j=a[b[i]]+1;j<=r;j++){
  42. for(int u : adj[j]){
  43. adj[a[b[i]]-d].pb(u);
  44. a[u] = a[b[i]] - d;
  45. }
  46. adj[j].clear();
  47. d++;
  48. }
  49. r = a[b[i]];
  50. }
  51. }
  52. vector<int> ans;
  53. for(int i=0;i<=n;i++){
  54. if(!adj[i].empty()){
  55. ans.pb((int)adj[i].size());
  56. }
  57. }
  58. cout << (int)ans.size() << '\n';
  59. for(int u : ans) cout << u << " ";
  60. return 0;
  61. }
Success #stdin #stdout 0.01s 30960KB
stdin
Standard input is empty
stdout
2
1 1