제출 #47452

#제출 시각아이디문제언어결과실행 시간메모리
47452mirbek01Worst Reporter 3 (JOI18_worst_reporter3)C++17
12 / 100
2070 ms8472 KiB
# include <bits/stdc++.h>

using namespace std;

const int N = 5e5 + 2;

long long n, q, d[N], p[1001][1001];

int main(){
      cin >> n >> q;

      int cn = 0;

      for(int i = 1; i <= n; i ++){
            cin >> d[i];
            if(d[i] == 1) cn ++;
      }

      if(cn == n){
            for(int i = 1; i <= q; i ++){
                  int t, l, r;
                  cin >> t >> l >> r;
                  int L = t - n, R = t;
                  if(l > R || L > r) {
                        cout << 0 << endl;
                        continue;
                  }
                  if(l <= L && R <= r){
                        cout << R - L + 1 << endl;
                        continue;
                  }
                  if(l <= L && L <= r){
                        cout << r - L + 1 << endl;
                        continue;
                  }
                  if(l <= R && R <= r){
                        cout << R - l + 1 << endl;
                        continue;
                  }
                  if(L <= l && r <= R){
                        cout << r - l + 1 << endl;
                        continue;
                  }
            }
            return 0;
      }

      for(int i = 0; i <= 1000; i ++){
            if(i == 0){
                  for(int j = 1; j <= n; j ++)
                        p[i][j] = -j;
            } else {
                  p[i][0] = i;
                  for(int j = 1; j <= n; j ++){
                        p[i][j] = p[i - 1][j];
                        if(p[i][j - 1] - p[i][j] > d[j])
                              p[i][j] = p[i][j - 1] - 1;
                  }
            }
      }

      for(int i = 1; i <= q; i ++){
            int t, l, r;
            cin >> t >> l >> r;
            int cn = 0;
            for(int j = 0; j <= n; j ++){
                  if(p[t][j] >= l && p[t][j] <= r) cn ++;
            }
            cout << cn << endl;
      }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...