fork download
  1. #include <bits/stdc++.h>
  2. #define C make_pair
  3. #define ll long long
  4. #define all(a) a.begin(),a.end()
  5. #define name "task"
  6. #define ln "\n"
  7. using namespace std;
  8. ll n;
  9. void solve(){
  10. cin>>n;
  11. ll a[n+5];
  12. vector<ll> b(n+5),a1;
  13. deque<ll> pos;
  14. a1.push_back(0);
  15. for(int i=1;i<=n;++i){
  16. cin>>a[i]; a1.push_back(a[i]);
  17. }
  18. for(int i=1;i<=n;++i)
  19. cin>>b[i];
  20. for(int i=1;i<=n;++i){
  21. if(a[i]!=b[i]){
  22. pos.push_back(i);
  23. }
  24. }
  25. sort(all(pos));
  26. sort(a+1LL*pos[0],a+1+1LL*pos[pos.size()-1]);
  27. while(a[pos[0]]==a1[pos[0]-1] && pos[0]-1>=1){
  28. pos.push_front(pos[0]-1);
  29. }
  30. while(a[pos[pos.size()-1]]==a1[pos[pos.size()-1]+1] && pos[pos.size()-1]+1<=n){
  31. pos.push_back(pos[pos.size()-1]+1);
  32. }
  33. while(a[pos[0]]>a1[pos[0]-1] && pos[0]-1>=1 && a1[pos[0]-1]==b[pos[0]-1]){
  34. pos.push_front(pos[0]-1);
  35. }
  36. while(a[pos[pos.size()-1]]<a1[pos[pos.size()-1]+1] && pos[pos.size()-1]+1<=n && a1[pos[pos.size()-1]+1]+b[pos[pos.size()-1]+1]){
  37. pos.push_back(pos[pos.size()-1]+1);
  38. }
  39. sort(all(pos));
  40. cout<<pos[0]<<" "<<pos[pos.size()-1];
  41. }
  42. int main(){
  43. ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
  44. if(fopen(name".inp","r")){
  45. freopen(name".inp","r",stdin);
  46. freopen(name".out","w",stdout);
  47. }
  48. solve();
  49. }
  50.  
Success #stdin #stdout 0s 5292KB
stdin
5
4 2 3 2 1
4 2 2 3 1
stdout
2 4