(UPD: 2024-12-04 14:48 UTC) Judge is not working due to Cloudflare incident. (URL) We can do nothing about it, sorry. After the incident is resolved, we will grade all submissions.

Submission #566096

#TimeUsernameProblemLanguageResultExecution timeMemory
566096bkosmacinPaprike (COI18_paprike)C++14
100 / 100
56 ms14824 KiB
#include <bits/stdc++.h> using namespace std; const double PI = acos(-1); #define ll long long #define pb push_back #define mp make_pair #define pii pair<int,int> #define all(a) (a).begin(),(a).end() #define fi first #define sz(a) (a).size() #define se second #define DEGTORAD(D)((D * PI) / 180.0) #define RADTODEG(R)((180.0 * R) / PI) ll dx[]={0,0,1,-1},dy[]={1,-1,0,0}; const ll N = 1e5+5; ll n,k,h[N],otec[N],klk[N]; vector<ll> graf[N]; void dfs(ll x,ll y){ otec[x] = y; for (ll i=0;i<graf[x].size();i++){ if (graf[x][i]==y){ continue; } dfs(graf[x][i],x); } } void solve(){ cin >>n>>k; memset(klk,0,sizeof(klk)); for (ll i=0;i<n;i++){ cin >>h[i]; } for (ll i=0;i<n-1;i++){ ll x,y; cin >>x>>y; x--;y--; graf[x].pb(y); graf[y].pb(x); } dfs(0,-1); for (ll i=1;i<n;i++){ if (graf[i].size()>1){ klk[otec[i]]++; } if (graf[i].size()==1){ klk[i]=-1; } } queue<ll> q; for (ll i=0;i<n;i++){ if (klk[i]==0){ q.push(i); } } ll sol = 0; while (!q.empty()){ ll tren = q.front(); q.pop(); vector<ll> pom; for (ll i=0;i<graf[tren].size();++i){ if (graf[tren][i]==otec[tren]){ continue; } pom.pb(h[graf[tren][i]]); } ll pug = 0; sort(all(pom)); for (ll i=0;i<sz(pom);i++){ if (h[tren]+pom[i]<=k){ h[tren]+=pom[i]; }else{ sol+=sz(pom)-i; pug = sz(pom)-i; break; } } // cout <<tren+1<<' '<<h[tren]<<' '<<pug<<endl; klk[otec[tren]]--; if (klk[otec[tren]]==0){ q.push(otec[tren]); } } cout <<sol<<endl; } int main(){ ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int t=1; // cin >>t; while (t--){ solve(); } return 0; }

Compilation message (stderr)

paprike.cpp: In function 'void dfs(long long int, long long int)':
paprike.cpp:24:15: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   24 |  for (ll i=0;i<graf[x].size();i++){
      |              ~^~~~~~~~~~~~~~~
paprike.cpp: In function 'void solve()':
paprike.cpp:67:16: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   67 |   for (ll i=0;i<graf[tren].size();++i){
      |               ~^~~~~~~~~~~~~~~~~~
paprike.cpp:75:16: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   75 |   for (ll i=0;i<sz(pom);i++){
      |                ^
paprike.cpp:73:6: warning: variable 'pug' set but not used [-Wunused-but-set-variable]
   73 |   ll pug = 0;
      |      ^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...