1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
| #include<bits/stdc++.h> using namespace std; using ll=long long; #define rep(i,a,n) for(int i=a;i<=n;i++) #define frep(i,a,n) for(int i=a;i>=n;i--) #define int long long const int N=1e5+100; #define PII pair<int,int> #define lowbit(x) (x&(-x)) const int mod=1e9+7; const double pai=acos(-1.0); #define ios ios::sync_with_stdio(0); cin.tie(0),cout.tie(0); #define LF(x) fixed<<setprecision(x) int a[N]; void Totoro() { int n,k,x; unordered_map<int,vector<int> >mp; cin>>n>>k>>x; rep(i,1,n) { cin>>a[i]; mp[i%k].push_back(a[i]); } int sum=0; for(auto &[_x,y]:mp) { sort(y.begin(),y.end()); int maxn=y.back(); for(auto &c:y) { sum+=maxn-c; c=maxn; } } if(sum>x) { cout<<-1<<'\n'; return ; } x-=sum; int ans=*max_element(a+1,a+1+n); for(auto &[_x,y]:mp) { ans=max(ll(ans),ll(y.back()+x/y.size())); } cout<<ans<<'\n'; } signed main() { ios;
int t; cin>>t; while(t--) { Totoro(); } return 0; }
|