Submission #1078753

#TimeUsernameProblemLanguageResultExecution timeMemory
1078753PoPularPlusPlusClosing Time (IOI23_closing)C++17
0 / 100
1069 ms10320 KiB
#include "closing.h" #include <bits/stdc++.h> using namespace std; #define ll long long #define all(x) x.begin(),x.end() #define pb(x) push_back(x) #define mp(x,y) make_pair(x,y) #define vf first #define vs second int max_score(int n, int x, int y, ll k,vector<int> u, vector<int> v, vector<int> w){ ll weight[n]; memset(weight,0,sizeof weight); for(int i = 0; i < n - 1; i++){ if(u[i] > v[i]){ swap(u[i] , v[i]); } weight[u[i]] = w[i]; } for(int i = 0; i < n-1; i++){ w[i] = weight[i]; } ll cur = 0; int ans = 0; int cur_w[n]; for(int i = x; i >= 0; i--){ for(int j = y; j < n; j++){ memset(cur_w,0,sizeof cur_w); ll rem = k; ll cur = 0; for(int tp = x; tp >= i; tp--){ rem -= cur; cur_w[tp] = cur; if(tp > 0){ cur += w[tp-1]; } } cur = 0; for(int tp = y; tp <= j; tp++){ rem -= cur; cur_w[tp] = cur; cur += w[tp]; } if(rem >= 0){ int res = (x - i) + (j - y) + 2; // cout << res << ' '; int left = x + 1 , right = y - 1; ll cur_l = w[x] , cur_r = w[y-1]; while(rem >= 0 && left < n && right >= 0){ if(left < n && cur_l - cur_w[left] < cur_r - cur_w[right]){ if(rem - (max(0LL,cur_l - cur_w[left])) >= 0){ rem -= (max(0LL,cur_l - cur_w[left])); res++; left++; cur_l += w[left-1]; } else break; } else { if(rem - max(0LL, cur_r - cur_w[right]) >= 0){ rem -= max(0LL, cur_r - cur_w[right]); res++; right--; cur_r += w[right]; } else break; } } // cout << i << ' ' << j << ' ' << res << ' ' << left << ' ' << right << "\n"; ans = max(ans , res); } } } return ans; }

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:25:8: warning: unused variable 'cur' [-Wunused-variable]
   25 |     ll cur = 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...
#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...