Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdio>
- #include <deque>
- using namespace std;
- #define s second
- #define f first
- const int mx=1e5+7;
- int n, pt;
- int ciag[mx];
- int wyn[mx];
- deque <int> d;
- void gasieniczka(){
- d.push_back(0);
- int x=0;
- for(int y=1; y<n; y++){
- wyn[y]=wyn[d.front()];
- int zm=ciag[y], zm2=ciag[d.front()];
- if(zm2<=zm)
- wyn[y]++;
- printf("i=%d w=%d\n",y,wyn[y]);
- while(!d.empty()){
- if(zm2>=zm){
- if(zm>zm){
- d.pop_back();
- }
- else{
- if(zm2<zm)
- d.pop_back();
- else
- break;
- }
- }
- else
- break;
- }
- d.push_back(y);
- if(y-x>=pt){
- if(d.front()==x)
- d.pop_front();
- x++;
- }
- }
- }
- int main(){
- scanf("%d",&n);
- for(int i=0; i<n; i++){
- scanf("%d",&ciag[i]);
- }
- int q;
- scanf("%d",&q);
- while(q--){
- scanf("%d",&pt);
- gasieniczka();
- printf("%d\n",wyn[n-1]);
- for(int i=0; i<n; i++)
- wyn[i]=0;
- d.clear();
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement