Submission #1065142

#TimeUsernameProblemLanguageResultExecution timeMemory
1065142vjudge1봉쇄 시간 (IOI23_closing)C++17
35 / 100
109 ms33208 KiB
#include "closing.h" #include<bits/stdc++.h> using namespace std; vector<pair<int,int>>adj[200100]; vector<long long>v; void dfs(int n,int p,long long d){ v.push_back(d); for(auto[i,w]:adj[n]) if(i-p)dfs(i,n,d+w); } int max_score(int N, int X, int Y, long long K,std::vector<int> U, std::vector<int> V, std::vector<int> W){ vector<long long>pos(N); for(int i=1;i<N;i++) pos[i]=pos[i-1]+W[i-1]; for(int i=0;i<N-1;i++) adj[U[i]].push_back({V[i],W[i]}), adj[V[i]].push_back({U[i],W[i]}); v.clear(); dfs(X,N,0); dfs(Y,N,0); sort(v.rbegin(),v.rend()); long long origK=K; while(v.size()) if(v.back()<=K) K-=v.back(), v.pop_back(); else break; for(int i=0;i<N;i++) adj[i].clear(); K=origK; int ans1=2*N-v.size(); priority_queue<pair<int,int>,vector<pair<int,int>>,greater<>> pq; int ans2=0; for(int i=X;i<Y;i++){ int A=pos[i]-pos[X]; int B=pos[Y]-pos[i]; K-=min(A,B);ans2++; pq.push({max(B,A)-min(A,B),1}); } for(int i=0;i<X;i++) pq.push({pos[X]-pos[i],0}); for(int i=Y;i<N;i++) pq.push({pos[i]-pos[Y],0}); if(K<0) ans2=0; while(pq.size()){ auto[a,b]=pq.top(); if(a>K)break;K-=a;pq.pop();ans2++; if(!b)pq.push({pos[Y]-pos[X],1}); } return max(ans1,ans2); }

Compilation message (stderr)

closing.cpp: In function 'int max_score(int, int, int, long long int, std::vector<int>, std::vector<int>, std::vector<int>)':
closing.cpp:47:9: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
   47 |         if(a>K)break;K-=a;pq.pop();ans2++;
      |         ^~
closing.cpp:47:22: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
   47 |         if(a>K)break;K-=a;pq.pop();ans2++;
      |                      ^
#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...