fork download
  1. #include <bits/stdc++.h>
  2. #define sz(in) in.size()
  3. #define mp make_pair
  4. #define pb push_back
  5. using namespace std;
  6.  
  7. int solve(vector<int> in , int k)//
  8. {
  9. assert( sz(in) >=2 );
  10.  
  11. stack<int> st;
  12.  
  13. st.push( 0 );
  14.  
  15. for(int i=1;i<sz(in);i++)
  16. {
  17. int curr=in[i];
  18.  
  19. while ( (!st.empty()) &&( in[st.top()] > curr) )
  20. {
  21. if( ( in[st.top()] + curr) >= k)
  22. {
  23. cout<<st.top()<<" "<<i<<endl;
  24. }
  25.  
  26. st.pop();
  27. }
  28.  
  29. if( !st.empty())
  30. {
  31. if( ( in[st.top()] + curr) >= k)
  32. {
  33. cout<<st.top()<<" "<<i<<endl;
  34. }
  35. }
  36.  
  37. st.push(i);
  38. }
  39.  
  40. return 0;
  41.  
  42. }
  43.  
  44.  
  45. int main()
  46. {
  47.  
  48. int n,k;
  49.  
  50. cin>>n>>k;
  51.  
  52. vector<int> in(n);
  53.  
  54. for(int i=0;i<n;i++)
  55. cin>>in[i];
  56.  
  57. solve(in,k);
  58.  
  59. }
Success #stdin #stdout 0s 3436KB
stdin
10 12
9 8 7 6 5 4 3 2 1 2
stdout
0  1
1  2
2  3