| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 1355797 | kokokai | Fish 2 (JOI22_fish2) | C++20 | 12 ms | 9652 KiB |
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
#define task "text"
#define fi first
#define se second
#define int long long
const int N = 2e5+5;
namespace subtask2{
int solve(vector<int> a){
int n=a.size();
vector<int> rig(n),lef(n);
vector<int> don(n+1),pre(n);
pre[0]=a[0];
for(int i=1;i<n;i++) pre[i]=pre[i-1]+a[i];
for(int i=0;i<n;i++){
int l=i+1,r=n-1,p=r+1;
while(l<=r){
int mid=(l+r)>>1;
if(pre[mid]-pre[i] >= a[i]){
p=mid;
r=mid-1;
}else l=mid+1;
}
rig[i]=p;
}
for(int i=n-1;i>=0;i--){
int l=0,r=i-1,p=-1;
while(l<=r){
int mid=(l+r)>>1;
int v=pre[i-1];
if(mid>0) v-=pre[mid-1];
if(v >= a[i]){
p=mid;
l=mid+1;
}else r=mid-1;
}
lef[i]=p;
}
for(int i=0;i<n;i++){
//cerr<<i<<' '<<lef[i]<<' '<<rig[i]<<'\n';
}
for(int i=0;i<n;i++){
if(rig[i]>=n){
don[i+1]++;
}
if(lef[i] == -1){
don[0]++;
don[i]--;
}
}
vector<vector<int>> pos(n);
for(int i=0;i<n;i++){
if(lef[i] != -1){
pos[lef[i]].push_back(i);
}
}
for(int i=0;i<n;i++){
if(pos[i].size() && rig[i]<n){
int p=upper_bound(pos[i].begin(),pos[i].end(),rig[i])-pos[i].begin()-1;
if(p>=0){
int pp=pos[i][p]-1;
if(i <= pp){
don[i+1]++;
don[pp+1]--;
}
}
}
}
for(int i=1;i<n;i++) don[i]+=don[i-1];
int ans=0;
for(int i=0;i<n;i++){
if(don[i] == 0){
//cerr<<i<<'\n';
ans++;
}
}
return ans;
}
void slv(){
int n;
cin>>n;
vector<int> a(n);
for(int i=0;i<n;i++) cin>>a[i];
int q;
cin>>q;
while(q--){
int t,l,r;
cin>>t>>l>>r;
if(t == 1){
--l;
a[l]=r;
}else{
--l;
--r;
vector<int> b;
for(int i=l;i<=r;i++) b.push_back(a[i]);
cout<<solve(b)<<'\n';
}
}
}
}
signed main(){
ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);
if(fopen(task".inp", "r")) {
freopen(task".inp", "r", stdin);
}
subtask2::slv();
}
Compilation message (stderr)
| # | Result | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Result | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Result | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Result | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Result | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Result | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
