제출 #1216399

#제출 시각아이디문제언어결과실행 시간메모리
1216399ASGA_RedSea송신탑 (IOI22_towers)C++20
4 / 100
3741 ms2452 KiB
/** * بسم الله الرحمن الرحيم * ﴾ رَبِّ اشْرَحْ لِي صَدْرِي * وَيَسِّرْ لِي أَمْرِي * وَاحْلُلْ عُقْدَةً مِّن لِّسَانِي * يَفْقَهُوا قَوْلِي ﴿ */ /// author : "ASGA" #pragma GCC optimize("Ofast") #include <bits/stdc++.h> using namespace std; using ll=long long; #include"towers.h" int n; vector<int>a; int spt,k; void init(int N,vector<int>H){ n=N; a=H; int l=1,r=n-2; while(l<n&&a[l-1]<=a[l])l++;l--; while(r>=0&&a[r]>=a[r+1])r--;r++; spt=2; if(l==r){spt=1;k=l;} } struct sgt{ vector<int>s; int lg,sz; sgt(int n){ lg=__lg(n)+1;sz=1<<lg; s.assign(sz*2,1e9); } void edit(int i,int v){ s[(i+=sz)]=v; while(i>1){ i>>=1; s[i]=min(s[i*2],s[i*2+1]); } } int get(int L,int R,int l,int r,int i){ if(l>R||L>r)return 1e9; if(L<=l&&r<=R)return s[i]; return min(get(L,R,l,(l+r)/2,i*2),get(L,R,(l+r)/2+1,r,i*2+1)); } int get(int l,int r){return get(++l,++r,1,sz,1);} }; int max_towers(int l,int r,int dd){ if(spt==1){ return(k>=l&&k<=r&&a[l]<=a[k]-dd&&a[r]<=a[k]-dd?2:1); } vector<int>d(n,0); d[l]=1; sgt s(n); for(int i=l+1;i<=r;i++){ d[i]=d[i-1]; //int g=s.get(a[i]+d); } return d[r]; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...