Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- int v[500005],stiva[500005],rez[500005];
- int main()
- {
- std::ios_base::sync_with_stdio(false);
- std::cin.tie(0);
- std::cout.tie(0);
- int n,v1,poz=0;
- string m;
- cin>>n>>m>>v1;
- int maxim=v1*v1/20;
- for(int i=1;i<=n;++i)
- cin>>v[i];
- for(int i=n;i>=1;--i)
- {
- while(poz>=1&&v[stiva[poz]]<=v[i])
- --poz;
- ++poz;
- stiva[poz]=i;
- int st=1,dr=poz,mij,val=n;
- while(dr>=st)
- {
- mij=(st+dr)/2;
- if(v[stiva[mij]]>v[i]+maxim)
- val=stiva[mij]-1,st=mij+1;
- else
- dr=mij-1;
- }
- rez[i]=val;
- }
- for(int i=1;i<=n;++i)
- cout<<rez[i]<<' ';
- cout<<'\n';
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement