Envío 6820
- Autor: jmorenoh
- Fecha: 2022-12-09 15:46:06 UTC (Hace 12 meses)
Caso # |
Resultado |
Tiempo |
Memoria |
#1 |

Correcto
|
0.005 s
|
1 KBi |
#2 |

Correcto
|
0.005 s
|
1 KBi |
#3 |

Correcto
|
0.007 s
|
1 KBi |
#4 |

Correcto
|
0.005 s
|
1 KBi |
#5 |

Correcto
|
0.006 s
|
1 KBi |
#6 |

Correcto
|
0.006 s
|
1 KBi |
#7 |

Correcto
|
0.008 s
|
1 KBi |
#8 |

Correcto
|
0.005 s
|
1 KBi |
#9 |

Correcto
|
0.007 s
|
1 KBi |
#10 |

Correcto
|
0.004 s
|
1 KBi |
#11 |

Correcto
|
0.004 s
|
1 KBi |
#12 |

Correcto
|
0.007 s
|
1 KBi |
#13 |

Correcto
|
0.006 s
|
1 KBi |
#14 |

Correcto
|
0.039 s
|
3 KBi |
#15 |

Correcto
|
0.037 s
|
3 KBi |
#16 |

Correcto
|
0.042 s
|
3 KBi |
#17 |

Correcto
|
0.034 s
|
3 KBi |
#18 |

Correcto
|
0.032 s
|
3 KBi |
#19 |

Correcto
|
0.035 s
|
3 KBi |
#20 |

Correcto
|
0.047 s
|
3 KBi |
Puntos totales: 100 / 100
Código
#include <bits/stdc++.h>
#define IO ios_base::sync_with_stdio(false), cin.tie(nullptr)
#define endl '\n'
using namespace std;
long long go(vector<int> &a, vector<int> &b, int k, int l, int i, int j, set<int> &s, long long acum){
if(k<=0)return acum;
long long res = 0;
s.insert(b[i]);
acum += b[i];
if(s.size()>l){acum-=*s.begin();s.erase(s.begin());}
res = max(res,a[i]+go(a,b,k-1,l,i+1,j,s,acum));
s.erase(b[i]);
acum-=b[i];
s.insert(b[j]);
acum += b[j];
if(s.size()>l)s.erase(s.begin());
res = max(res,b[i]+go(a,b,k-1,l,i,j-1,s,acum));
s.erase(b[j]);
acum -= b[j];
return res;
}
int main(){
IO;/*
int n;cin>>n;
vector<int> a(n+1),b(n+1);
for(int i=1;i<=n;i++)cin>>a[i];
for(int i=1;i<=n;i++)cin>>b[i];
int k,l;cin>>k>>l;
set<int> s;
cout<<go(a,b,k,l,1,n,s,0)<<endl;
*/
int n;cin>>n;
vector<int> v(n);
long long acum = 0;
for(int i=0;i<n;i++){
cin>>v[i];
acum+=v[i];
}
int i = 0;
long long left = v[i], right = acum - v[i];
bool flag = false;
while(!(left>0 && right<0)){
i++;
if(i==v.size()){
flag = true;
break;
}
left += v[i];
right -= v[i];
}
if(flag)cout<<"Impossible"<<endl;
else cout<<i+1<<endl;
return 0;
}