Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define dim 100004
- using namespace std;
- ifstream fin("colina.in");
- ofstream fout("colina.out");
- int n,m,i,maxx,poz,j,k,x,st,dr;
- pair<int,int> v[dim],sortat[dim];
- set <int> s;
- int cautst(int x){
- int st=1,dr=n,mid;
- while(st<=dr){
- mid=(st+dr)/2;
- if(sortat[mid].first>=x){
- dr=mid-1;
- }
- else
- st=mid+1;
- }
- if(sortat[st].first==x){
- return st;
- }
- return -1;
- }
- int cautdr(int x){
- int st=1,dr=n,mid;
- while(st<=dr){
- mid=(st+dr)/2;
- if(sortat[mid].first>x){
- dr=mid-1;
- }
- else
- st=mid+1;
- }
- if(sortat[dr].first==x){
- return dr;
- }
- return -1;
- }
- int main()
- {
- fin>>n>>m;
- for(i=1;i<=n;i++){
- fin>>v[i].first;
- v[i].second=i;
- if(v[i].first>maxx){
- maxx=v[i].first;
- poz=i;
- }
- }
- i=1;
- j=n;
- while(i<=poz&&j>poz){
- if(v[i].first<v[j].first){
- sortat[++k]=v[i];
- i++;
- }
- else {
- sortat[++k]=v[j];
- j--;
- }
- }
- while(i<=poz){
- sortat[++k]=v[i];
- i++;
- }
- while(j>poz){
- sortat[++k]=v[j];
- j--;
- }
- for(i=1;i<=m;i++){
- fin>>x;
- st=cautst(x);
- if(st!=-1){
- dr=cautdr(x);
- }
- if(st==-1){
- fout<<"NU\n";
- continue;
- }
- s.clear();
- fout<<"DA ";
- for(j=st;j<=dr;j++)
- s.insert(sortat[j].second);
- for(auto it=s.begin();it!=s.end();it++)
- fout<<*it<<" ";
- fout<<"\n";
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement