fork download
  1. #include <bits/stdc++.h>
  2. #define endl "\n"
  3. typedef long long ll;
  4. typedef unsigned long long ull;
  5.  
  6. using namespace std;
  7. ll a[100005], b[100005], s[100005], x[100005];
  8. int main(){
  9. ios::sync_with_stdio(false);
  10. int n; cin >> n;
  11. map <int, ll> map;
  12. // map <ll, ll> map1;
  13. for (int i = 1; i <= n; i++) cin >> a[i];
  14. for (int i = 1; i <= n; i++) cin >> b[i];
  15. s[1] = b[1];
  16. for (int i = 1; i <= n; i++){
  17. ll index = 1e10, index1 = 1e10, flag = 1, flag1 = 2;
  18. for (int j = 1; j < i; j++){
  19. if(a[i] > a[j] && map[j] == 1 && (s[j] < index)){
  20. flag = 0;
  21. flag1 = 0;
  22. index = s[j];
  23. }
  24. if(a[i] > a[j] && (index1 == 1e10 || b[j] < b[index1])){
  25. index1 = j;
  26. }
  27. if(a[i] > a[j] && map[j] == 2 && (x[j] < index)){
  28. index = x[j];
  29. flag = 0;
  30. flag1 = 1;
  31. }
  32. }
  33. if(flag == 1){
  34. if(index1 != 1e10){
  35. map[i] = 1;
  36. s[i] = b[i] + s[index1];
  37. }
  38. else{
  39. map[i] = 0;
  40. s[i] = b[i];
  41. }
  42. }
  43. else{
  44. map[i] = 2;
  45. s[i] = index + b[i];
  46. }
  47.  
  48. }
  49. ll MIN = 5e9;
  50. for (int i = 1; i <= n; i++){
  51. if(map[i] == 2) MIN = min(MIN, s[i]);
  52. }
  53. if(MIN != 5e9) cout << MIN;
  54. else cout << -1;
  55.  
  56. }
  57.  
Success #stdin #stdout 0s 18360KB
stdin
Standard input is empty
stdout
-1