Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- #define Size 1000005
- long long A[Size];
- long long Left[Size],Right[Size];
- int N,M,Limit;
- struct sub_ary{
- int l;
- int r;
- sub_ary(int a,int b){
- l = a;
- r = b;
- }
- };
- vector<sub_ary> sub_List;
- long long max_in_sub_array[Size];
- int total = 0;
- void calc_sub_array(){
- for(int i = 0;i<N;i++){
- for(int j = i;j<N;j++){
- sub_List.push_back(sub_ary(i,j));
- }
- }
- total = sub_List.size();
- for(int i = 0;i<total;i++){
- long long Max = 0;
- for(int c = sub_List[i].l;c<=sub_List[i].r;c++){
- Max = max(Max,A[c]);
- }
- max_in_sub_array[i] = Max;
- }
- }
- long long calc_greater(int K){
- long long cnt = 0;
- for(int i = 0;i<total;i++){
- if(max_in_sub_array[i] > K) cnt++;
- }
- return cnt;
- }
- long long calc_smaller(int K){
- long long cnt = 0;
- for(int i = 0;i<total;i++){
- if(max_in_sub_array[i] < K) cnt++;
- }
- return cnt;
- }
- long long calc_equal(int K){
- long long cnt = 0;
- for(int i = 0;i<total;i++){
- if(max_in_sub_array[i] == K) cnt++;
- }
- return cnt;
- }
- string rs,typ,player,result = "";
- string get_result(long long ret){
- if(ret % 2 == 0){
- if(player[0] == 'D') rs = "C";
- if(player[0] == 'C') rs = "D";
- }else{
- if(player[0] == 'D') rs = "D";
- if(player[0] == 'C') rs = "C";
- }
- return rs;
- }
- int main() {
- int K;
- cin >> N >> M;
- for(int i = 0;i<N;i++){
- cin >> A[i];
- }
- calc_sub_array();
- for(int i = 0;i<M;i++){
- cin >> typ >> K >> player;
- long long ret;
- if(typ[0] == '>'){
- ret = calc_greater(K);
- }else if(typ[0] == '<'){
- ret = calc_smaller(K);
- }else{
- ret = calc_equal(K);
- }
- rs = get_result(ret);
- result = result.append(rs);
- }
- cout << result << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment