题解:CF2086B Large Array and Segments
AstaVenti_ · · 题解
\mathbf{0x00} 启
蒟蒻的第
\mathbf{0x01} 承
将一个数组
\mathbf{0x02} 转
很显然,如果从后往前依次遍历
记
个人认为代码中的边界情况还是很不好处理的。
\mathbf{0x03} 合
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll T,n,k,x;
int main(){
cin.tie(0),cout.tie(0)->sync_with_stdio(0);
cin>>T;
while(T--){
cin>>n>>k>>x;
vector<ll>a(n+1),g(n+1);
ll sum=0,c=0;
for(ll i=1;i<=n;i++){
cin>>a[i];
sum+=a[i];
}
if(sum*k<x){
cout<<0<<endl;
continue;
}
ll p=x/sum,q=x%sum,l=0;
if(q==0)p--,q=sum;
for(ll i=n;i>=1;i--){
l+=a[i];
if(l>=q){
c=i;
break;
}
}
cout<<n*k-p*n+c-n<<endl;
}
}