Submission #867085

#TimeUsernameProblemLanguageResultExecution timeMemory
867085vjudge1Untitled (POI11_rot)C++17
Compilation error
0 ms0 KiB
//gm --- akezhon #include <bits/stdc++.h> //#pragma GCC optimize("Ofast,no-stack-protector,unroll-loops,fast-math,O3") //#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native") // #define int long long #define pb push_back #define F first #define S second #define all(v) v.begin(),v.end() #define pii pair<int,int> #define tm (tl+tr)/2 #define TL v+v, tl, tm #define TR v+v+1, tm+1, tr #define DA l <= tl && tr <= r #define NET r < tl || tr < l #define double long double using namespace std; const int N=3e7++7; const int M=1e9+7; const int NN=2e5+7; const int inf=1e9; int c[N], tin[N], tout[N], eul[N], sz[N], big[N], t[N*4], l[N], r[N], szz; vector <pair<int*, int>> rb; int n, timer, cur, ans; void roll(int &x){ rb.push_back({&x, x}); } void tupd(int pos, int v=1, int tl=1, int tr=n){ roll(t[v]); if(tl == tr){ t[v]++; return; } if(pos <= tm)tupd(pos, TL); else tupd(pos, TR); t[v] = t[v+v] + t[v+v+1]; } int get(int l, int r, int v=1, int tl=1, int tr=n){ if(NET)return 0; if(DA)return t[v]; return get(l, r, TL) + get(l, r, TR); } void dfs(int v=1){ tin[v] = ++timer; eul[timer] = v; sz[v] = 1; if(!c[v]){ dfs(l[v]); dfs(r[v]); sz[v] += sz[l[v]]; sz[v] += sz[r[v]]; if(sz[r[v]] > sz[l[v]])big[v] = r[v]; else big[v] = l[v]; } tout[v] = timer; } void go(int v=1, int cl=0){ int temp = rb.size(); if(!c[v]){ if(big[v] == l[v])go(r[v], 1); else go(l[v], 1); go(big[v], 0); int cntkeep=0, cntswap=0; if(big[v] == l[v]){ for(int i=tin[r[v]]; i <= tout[r[v]]; i++){ int f = eul[i]; if(c[f]){ cntkeep += get(c[f], n); cntswap += get(1, c[f]); } } if(!cl) { for(int i=tin[r[v]]; i <= tout[r[v]]; i++){ int f = eul[i]; if(c[f]){ tupd(c[f]); } } } } else { for(int i=tin[l[v]]; i <= tout[l[v]]; i++){ int f = eul[i]; if(c[f]){ cntkeep += get(1, c[f]); cntswap += get(c[f], n); } } if(!cl){ for(int i=tin[l[v]]; i <= tout[l[v]]; i++){ int f = eul[i]; if(c[f]){ tupd(c[f]); } } } } ans += min(cntkeep, cntswap); if(cl){ while(temp < (int)rb.size()){ *(rb.back().F) = rb.back().S; rb.pop_back(); } } } else { if(!cl)tupd(c[v]); } } void rec(){ cin >> c[szz]; if(!c[szz]){ int cur = szz; szz++; l[cur] = szz; rec(); szz++; r[cur] = szz; rec(); } } void AlemAmenov(){ cin >> n; szz=1; rec(); dfs(); go(); cout << ans; } signed main(){ ios_base::sync_with_stdio(0); cin.tie(0); // freopen("promote.in", "r", stdin); // freopen("promote.out", "w", stdout); int RealName=1; // cin >> RealName; // int C=0; while(RealName--){ // cout << "Case " << ++C << ":\n"; AlemAmenov(); } return 0; }

Compilation message (stderr)

rot.cpp:18:13: error: lvalue required as increment operand
   18 | const int N=3e7++7;
      |             ^~~
rot.cpp:22:7: error: size of array 'c' is not an integral constant-expression
   22 | int c[N], tin[N], tout[N], eul[N], sz[N], big[N], t[N*4], l[N], r[N], szz;
      |       ^
rot.cpp:22:15: error: size of array 'tin' is not an integral constant-expression
   22 | int c[N], tin[N], tout[N], eul[N], sz[N], big[N], t[N*4], l[N], r[N], szz;
      |               ^
rot.cpp:22:24: error: size of array 'tout' is not an integral constant-expression
   22 | int c[N], tin[N], tout[N], eul[N], sz[N], big[N], t[N*4], l[N], r[N], szz;
      |                        ^
rot.cpp:22:32: error: size of array 'eul' is not an integral constant-expression
   22 | int c[N], tin[N], tout[N], eul[N], sz[N], big[N], t[N*4], l[N], r[N], szz;
      |                                ^
rot.cpp:22:39: error: size of array 'sz' is not an integral constant-expression
   22 | int c[N], tin[N], tout[N], eul[N], sz[N], big[N], t[N*4], l[N], r[N], szz;
      |                                       ^
rot.cpp:22:47: error: size of array 'big' is not an integral constant-expression
   22 | int c[N], tin[N], tout[N], eul[N], sz[N], big[N], t[N*4], l[N], r[N], szz;
      |                                               ^
rot.cpp:22:54: error: size of array 't' is not an integral constant-expression
   22 | int c[N], tin[N], tout[N], eul[N], sz[N], big[N], t[N*4], l[N], r[N], szz;
      |                                                     ~^~
rot.cpp:22:61: error: size of array 'l' is not an integral constant-expression
   22 | int c[N], tin[N], tout[N], eul[N], sz[N], big[N], t[N*4], l[N], r[N], szz;
      |                                                             ^
rot.cpp:22:67: error: size of array 'r' is not an integral constant-expression
   22 | int c[N], tin[N], tout[N], eul[N], sz[N], big[N], t[N*4], l[N], r[N], szz;
      |                                                                   ^