Tarango

Brute Force

Aug 11th, 2015
444
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.75 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define Size 1000005
  4.  
  5. long long A[Size];
  6. long long Left[Size],Right[Size];
  7. int N,M,Limit;
  8.  
  9. struct sub_ary{
  10.     int l;
  11.     int r;
  12.     sub_ary(int a,int b){
  13.         l = a;
  14.         r = b;
  15.     }
  16. };
  17.  
  18. vector<sub_ary> sub_List;
  19. long long max_in_sub_array[Size];
  20. int total = 0;
  21.  
  22. void calc_sub_array(){
  23.     for(int i = 0;i<N;i++){
  24.         for(int j = i;j<N;j++){
  25.             sub_List.push_back(sub_ary(i,j));
  26.         }
  27.     }
  28.     total = sub_List.size();
  29.     for(int i = 0;i<total;i++){
  30.         long long Max = 0;
  31.         for(int c = sub_List[i].l;c<=sub_List[i].r;c++){
  32.             Max = max(Max,A[c]);
  33.         }
  34.         max_in_sub_array[i] = Max;
  35.     }
  36. }
  37.  
  38. long long calc_greater(int K){
  39.     long long cnt = 0;
  40.     for(int i = 0;i<total;i++){
  41.         if(max_in_sub_array[i] > K) cnt++;
  42.     }
  43.     return cnt;
  44. }
  45.  
  46. long long calc_smaller(int K){
  47.     long long cnt = 0;
  48.     for(int i = 0;i<total;i++){
  49.         if(max_in_sub_array[i] < K) cnt++;
  50.     }
  51.     return cnt;
  52. }
  53.  
  54. long long calc_equal(int K){
  55.     long long cnt = 0;
  56.     for(int i = 0;i<total;i++){
  57.         if(max_in_sub_array[i] == K) cnt++;
  58.     }
  59.     return cnt;
  60. }
  61.  
  62. string rs,typ,player,result = "";
  63.  
  64. string get_result(long long ret){
  65.     if(ret % 2 == 0){
  66.         if(player[0] == 'D') rs = "C";
  67.         if(player[0] == 'C') rs = "D";
  68.     }else{
  69.         if(player[0] == 'D') rs = "D";
  70.         if(player[0] == 'C') rs = "C";
  71.     }
  72.     return rs;
  73. }
  74.  
  75. int main() {
  76.     int K;
  77.     cin >> N >> M;
  78.     for(int i = 0;i<N;i++){
  79.         cin >> A[i];
  80.     }
  81.     calc_sub_array();
  82.     for(int i = 0;i<M;i++){
  83.         cin >> typ >> K >> player;
  84.         long long ret;
  85.         if(typ[0] == '>'){
  86.             ret = calc_greater(K);
  87.         }else if(typ[0] == '<'){
  88.             ret = calc_smaller(K);
  89.         }else{
  90.             ret = calc_equal(K);
  91.         }
  92.         rs = get_result(ret);
  93.         result = result.append(rs);
  94.     }
  95.     cout << result << endl;
  96.     return 0;
  97. }
Advertisement
Add Comment
Please, Sign In to add comment