Submission #887189

#TimeUsernameProblemLanguageResultExecution timeMemory
887189MinbaevStone Arranging 2 (JOI23_ho_t1)C++17
25 / 100
71 ms39560 KiB
#include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> #pragma GCC target("avx,avx2,fma") #pragma GCC optimize("Ofast,unroll-loops") #define pii pair<int,int> using namespace __gnu_pbds; using namespace std; #define pb push_back #define all(x) x.begin(),x.end() #define rall(x) x.rbegin(),x.rend() #define int long long #define f first #define s second #define pii pair<int,int> template<class T>bool umax(T &a,T b){if(a<b){a=b;return true;}return false;} template<class T>bool umin(T &a,T b){if(b<a){a=b;return true;}return false;} typedef tree<int, null_type, less_equal<int>, rb_tree_tag, tree_order_statistics_node_update> ordered_set; const int mod= 1e9 +7; const int N=1e5*4; int binpow (int a, int n) { if (n == 0) return 1; if (n % 2 == 1) return binpow (a, n-1) * a; else { int b = binpow (a, n/2); return b * b; } } int t[N*4],bn[N*4]; vector<int>v(N); void build(int tl,int tr,int vs){ if(tl==tr){ t[vs] = v[tl]; return; } int tm = (tl+tr)/2; build(tl,tm,vs*2); build(tm+1,tr,vs*2+1); t[vs] = t[vs*2] + t[vs*2+1]; } void push(int tl,int tr,int v){ if(bn[v]==-1){ return; } t[v]=(tr-tl+1)*bn[v]; if(tl!=tr){ bn[v*2]=bn[v]; bn[v*2+1]=bn[v]; } bn[v]=-1; } void update( int v,int l,int r,int x,int tl,int tr){ push(tl,tr,v); if(l>tr||r<tl||tr<tl)return; if(l<=tl&&tr<=r){ bn[v]=x; push(tl,tr,v); return; } int tm=(tl+tr)/2; update(v*2,l,r,x,tl,tm); update(v*2+1,l,r,x,tm+1,tr); t[v]=t[v*2]+t[v*2+1]; } int get(int tl,int tr,int v,int pos){ if(tl==tr){ return t[v]; } int tm = (tl+tr)/2; if(pos<=tm){ return get( tl,tm,v*2,pos); } else return get(tm+1,tr,v*2+1,pos); } void solve(){ for(int i = 1;i<N*4;i++){ bn[i] = -1; } int n,m,k; cin>>n; for(int i = 0;i<n;i++)cin>>v[i]; vector<int>ans(n); if(n<=2000){ for(int i = 0;i<n;i++){ ans[i] = v[i]; for(int j = i - 1;j>=0;j--){ if(ans[j]==v[i]){ for(int k = j;k<i;k++){ ans[k] = v[i]; } break; } } } for(auto to:ans)cout<<to<<"\n"; return; } vector<int>vs1,vs2; vector<pair<int,pii>>vs; int ind1 = -1, ind2 = -1; for(int i = 0;i<n;i++){ ans[i] = v[i]; if(v[i]==1){ if(vs1.empty()||ind1==-1){ vs1.pb(i); ind1 = i; continue; } int u = vs1[ind1]; ind1 = i; ind2 -= (i - u - 1); vs.pb({1,{u,i}}); vs1.pb(i); } else{ if(vs2.empty()||ind2==-1){ vs2.pb(i); ind2 = i; continue; } int u = vs2[ind2]; ind2 = i; ind1 -= (i - u - 1); vs.pb({2,{u,i}}); vs2.pb(i); } } for(auto [val,to] : vs){ update(1,to.f+1,to.s+1,val,1,n); } for(int i = 1;i<=n;i++){ ans[i-1] = get(1,n,1,i); } for(auto to:ans) cout<<to<<" "; } signed main() { // freopen("seq.in", "r", stdin); // freopen("seq.out", "w", stdout); ios_base::sync_with_stdio(0);cin.tie(NULL);cout.tie(NULL); int cnt=0; int tt=1;//cin>>tt; while(tt--)solve(); }

Compilation message (stderr)

Main.cpp: In function 'void solve()':
Main.cpp:94:8: warning: unused variable 'm' [-Wunused-variable]
   94 |  int n,m,k;
      |        ^
Main.cpp:94:10: warning: unused variable 'k' [-Wunused-variable]
   94 |  int n,m,k;
      |          ^
Main.cpp: In function 'int main()':
Main.cpp:176:6: warning: unused variable 'cnt' [-Wunused-variable]
  176 |  int cnt=0;
      |      ^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...