This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
#define int long long
#define pii pair<int,int>
#define x first
#define y second
using namespace std;
const int N=(1e6)+3;
int n,s,r,d[N],v[N];
vector<int> g[N],prefl[N],prefr[N];
vector<int> b;
int pref[N];
main(){
cin>>n>>s>>r;
b.push_back(0);
for(int k=2;k<=n;k++){
cin>>d[k];
b.push_back(b[b.size()-1]+d[k]);
}
for(int k=1;k<=n;k++)
cin>>v[k];
g[1].push_back(1);
int l=1;
for(int k=2;k<=n;k++){
if(d[k]>r)
l++;
g[l].push_back(k);
}
for(int k=1;k<=l;k++){
prefl[k].resize(g[k].size(),0);
prefl[k][0]=v[g[k][0]];
for(int i=1;i<g[k].size();i++)
prefl[k][i]=prefl[k][i-1]+v[g[k][i]];
}
for(int k=1;k<=l;k++){
int i=g[k].size()-1;
int j=lower_bound(b.begin(),b.end(),b[g[k][i]-1]-r)-b.begin();
j=g[k].size()-(g[k][i]-j);
prefr[k].push_back(prefl[k][i]- ((j>0) ? prefl[k][j-1] : 0));
while(i!=0){
i=j-1;
lower_bound(b.begin(),b.end(),b[g[k][i]-1]-r)-b.begin();
j=g[k].size()-(g[k][g[k].size()]-j);
prefr[k].push_back(prefl[k][g[k].size()-1]- ((j>0) ? prefl[k][j-1] : 0));
}
}
for(int k=1;k<=l;k++){
for(int i=0;i<prefr[k].size();i++)
cout<<prefr[k][i]<<' ';
cout<<endl;
}
return 0;
}
Compilation message (stderr)
SolarStorm.cpp:12:6: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
12 | main(){
| ^
SolarStorm.cpp: In function 'int main()':
SolarStorm.cpp:19:1: warning: this 'for' clause does not guard... [-Wmisleading-indentation]
19 | for(int k=1;k<=n;k++)
| ^~~
SolarStorm.cpp:21:5: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for'
21 | g[1].push_back(1);
| ^
SolarStorm.cpp:31:18: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
31 | for(int i=1;i<g[k].size();i++)
| ~^~~~~~~~~~~~
SolarStorm.cpp:47:18: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
47 | for(int i=0;i<prefr[k].size();i++)
| ~^~~~~~~~~~~~~~~~
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |