#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
int tab[n];
int suma=0;
int dyn[n];
int dyn_2[n];
for(int i=0;i<n;i++){
int x;
cin>>x;
tab[i]=x;
suma=suma+x;
dyn[i]=suma;
}
if(suma<0){
cout<<-1;
return 0;
}
for(int i=0;i<n;i++){
dyn_2[i]=suma-dyn[i];
}
int koszt=n;
int ost=0;
for(int i=0;i<n;i++){
if(tab[i]<0 && tab[i]+dyn_2[i]>=0){
koszt=koszt-(i-ost);
ost=i;
//cout<<i;
}
//cout<<tab[i]<<" "<<ost;
if(tab[i]>0 && ost==0){
koszt=koszt-i;
ost=i;
}
else if(tab[i]>0 && ost!=0){
ost=i;
}
}
cout<<koszt-1;
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | #include<bits/stdc++.h> using namespace std; int main(){ int n; cin>>n; int tab[n]; int suma=0; int dyn[n]; int dyn_2[n]; for(int i=0;i<n;i++){ int x; cin>>x; tab[i]=x; suma=suma+x; dyn[i]=suma; } if(suma<0){ cout<<-1; return 0; } for(int i=0;i<n;i++){ dyn_2[i]=suma-dyn[i]; } int koszt=n; int ost=0; for(int i=0;i<n;i++){ if(tab[i]<0 && tab[i]+dyn_2[i]>=0){ koszt=koszt-(i-ost); ost=i; //cout<<i; } //cout<<tab[i]<<" "<<ost; if(tab[i]>0 && ost==0){ koszt=koszt-i; ost=i; } else if(tab[i]>0 && ost!=0){ ost=i; } } cout<<koszt-1; } |
English