牛客竞赛 1014 双指针
思路
针对边界问题还是容易错
以后如果能维护闭区间就维护闭区间 , 对于到达下一个状态才能知道当前状态最优的情况也更好考虑
代码
#include<bits/stdc++.h>
using namespace std;
#define int long long int
inline int read() {
int ans = 0, f = 1;
char ch = getchar();
while (ch < '0' || ch > '9') {
if (ch == '-')f = -1;
ch = getchar();
}
while (ch <= '9' && ch >= '0') {
ans = ans * 10 + ch - '0';
ch = getchar();
}
return ans * f;
}
const int N = 2e5+10;
struct Item {
int pos,num,id;
bool operator<(const Item &x) const {
return pos < x.pos;
}
};
Item a[N];
signed main() {
int n= read();
int sum = 0;
for (int i =1; i<= n; i++) a[i].pos =read();
for (int i =1; i<= n; i++) {
a[i].num=read();
sum+=a[i].num;
a[i].id = i;
}
int cur = 0;
sort(a+1,a+1+n);
for (int i = 1; i<= n; i++) {
cur +=a[i].num;
if (cur*2 > sum) {
cout<<a[i].id<<"\n";
return 0;
}
}
return 0;
}

浙公网安备 33010602011771号