又到了一年一度的计蒜之道,第二次参加计蒜之道,但愿今年能在去年的基础上有个新突破
第一场,由于时间限制,只写了一个签到题,就此拉开了本年度计蒜之道
A. 百度无人车
思路:这题这题其实思路倒是蛮清晰的,就是不断维护数组最大值,关键就是边界处理问题,考虑清楚还挺有签到意味
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <cstring>
#include <map>
#include <cmath>
#include <string>
#include <queue>
#include <stack>
using namespace std;
const int maxn = 1e5+10;
int a[maxn];
int main()
{
int n;
long long p,s;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
scanf("%lld%lld",&p,&s);
int pos = n-1;
long long ti = 1LL;
sort(a,a+n);
long long dis;
while(s>0&&pos>=0)
{
if(pos == 0)
{
dis = a[pos] - 1;
}
else
{
dis= a[pos] - a[pos-1];
}
long long di = s / (ti * p);
long long dii = min(di,dis);
a[pos] -= dii;
s -= dii * ti * p;
pos--;
ti++;
if(dis > di)
{
break;
}
//cout << a[pos+1] << "*" << s << endl;
}
printf("%d\n",a[pos+1]);
return 0;
}