Submission #1069823

#TimeUsernameProblemLanguageResultExecution timeMemory
1069823Sir_Ahmed_ImranClosing Time (IOI23_closing)C++17
21 / 100
1047 ms13532 KiB
///~~~LOTA~~~/// #include <bits/stdc++.h> using namespace std; #define ll long long #define ld long double #define append push_back #define add insert #define nl '\n' #define ff first #define ss second #define pii pair<int,int> #define pll pair<ll,ll> #define all(x) (x).begin(),(x).end() #define L0TA ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL) #define terminator main #define N 3000 ll c[N]; int vis[N][2]; vector<pll> a[N]; int solve(int n,int x,int y,ll k){ priority_queue<pair<ll,pii>,vector<pair<ll,pii>>,greater<pair<ll,pii>>> Q; for(int i=0;i<n;i++) for(int j=0;j<2;j++) vis[i][j]=0; Q.push({0,{x,0}}); Q.push({0,{y,1}}); ll p,q,r; int ans=0; while(!Q.empty() && k>=Q.top().ff){ p=Q.top().ss.ff; r=Q.top().ss.ss; q=Q.top().ff; Q.pop(); if(vis[p][r]) continue; vis[p][r]=1; ans++; k-=q; for(auto& i:a[p]){ if(vis[i.ff][r]) continue; Q.push({q+i.ss,{i.ff,r}}); } } return ans; } int max_score(int n,int x,int y,ll k,vector<int> u,vector<int> v,vector<int> w){ int m,t,ans; ll o,p,q,r,s; ans=m=t=0; if(x>y) swap(x,y); for(int i=0;i<n-1;i++){ a[v[i]].append({u[i],w[i]}); a[u[i]].append({v[i],w[i]}); if(abs(v[i]-u[i])>1) t=1; } if(t) return solve(n,x,y,k); priority_queue<pair<ll,pll>,vector<pair<ll,pll>>,greater<pair<ll,pll>>> Q; for(int i=x;i<n;i++){ r=k; for(int j=o=0;j<=x;j++) c[j]=0; for(int j=i+1;j<n;j++) c[j]=0; for(int j=x;j<i;j++){ o+=w[j]; c[j+1]=o; r-=o; } o=0; if(r<0) break; for(int j=y;j>=0;j--){ if(o-c[j]>r) break; r-=max(0LL,o-c[j]); c[j]=max(c[j],o); m=i-x+y-j; s=r; Q.push({0,{0,x}}); Q.push({0,{0,y}}); while(!Q.empty() && Q.top().ff<=s){ p=Q.top().ff; q=Q.top().ss.ff; t=Q.top().ss.ss; Q.pop(); s-=p; m++; if(t<=x && t){ q+=w[t-1]; p=max(0LL,q-c[t-1]); Q.push({p,{q,t-1}}); } if(t>=y && t<n-1){ q+=w[t]; p=max(0LL,q-c[t+1]); Q.push({p,{q,t+1}}); } } while(!Q.empty()) Q.pop(); ans=max(ans,m); if(j) o+=w[j-1]; } } return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...