SHARE
TWEET

Untitled

a guest Feb 19th, 2019 63 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. #define all(x) x.begin(), x.end()
  6. #define len(x) int(x.size())
  7.  
  8. typedef long long ll;
  9.  
  10. /*
  11.     int n, c;
  12.     cin >> n;
  13.     vector <int> w(n);
  14.     for (int i = 0; i < n; i++) cin >> w[i];
  15.     cin >> c;
  16.     int l, r, t;
  17.     cin >> l >> r >> t;
  18.     bool kek = get(w, c, l, r, t);
  19.     if (kek)
  20.         cout << 1;
  21.     else
  22.         cout << 0;*/   
  23.  
  24.  
  25. /*
  26. bool get(vector <int> w, int c, int l, int r, int t){
  27.     int n = len(w);
  28.     vector <vector<int>> dp(2010, vector <int>(1010, -1));
  29.     for (int i = 0; i < n; i++)
  30.         dp[i][w[i]] = i;
  31.     for (int i = 1; i < n; i++){
  32.         for (int j = 0; j <= c; j++){              
  33.             dp[i][j] = max(dp[i - 1][j], dp[i][j]);
  34.             if (j - w[i] >= 0){                                
  35.                 dp[i][j] = max(dp[i][j], min(i, dp[i - 1][j - w[i]]));
  36.             }
  37.         }
  38.     }/*
  39.     for (int i = 0; i < n; i++){
  40.         for (int j = 0; j <= c; j++)
  41.             cout << dp[i][j] << ' ';
  42.         cout << endl;
  43.     }
  44.     r--;
  45.     l--;
  46.     if (dp[r][t] >= l) return true;
  47.     else return false;
  48. }*/
  49.  
  50. int main(){
  51.     #ifdef HOME
  52.     freopen("input.txt", "rt", stdin);
  53.     #endif //HOME
  54.     ios_base::sync_with_stdio(0);
  55.     cin.tie(0);
  56.     cout.tie(0);
  57.    
  58.    
  59.     while(true){
  60.         int n;
  61.         cin >> n;
  62.         if (n == 0) break;
  63.         vector <int> w(n + 1);
  64.         for (int i = 1; i <= n; i++)
  65.             cin >> w[i];
  66.         int c;
  67.         cin >> c;
  68.         vector <vector<int>> dp(n + 1, vector <int>(c + 1, -1));
  69.         for (int i = 1; i <= n; i++)
  70.             if (w[i] <= c)
  71.                 dp[i][w[i]] = i;
  72.         for (int i = 2; i <= n; i++){      
  73.             for (int j = 0; j <= c; j++){              
  74.                 dp[i][j] = max(dp[i][j], dp[i - 1][j]);            
  75.                 if (j - w[i] >= 0){                    
  76.                     dp[i][j] = max(dp[i - 1][j - w[i]], max(dp[i - 1][j], dp[i][j]));
  77.                 }
  78.                        
  79.             }
  80.         }   /*
  81.         for (int i = 1; i <= n; i++){
  82.             for (int j = 0; j <= c; j++){
  83.                 cout << dp[i][j] << ' ';
  84.             }
  85.             cout << endl;
  86.         }*/
  87.         int q;
  88.         cin >> q;      
  89.         string res = "";
  90.         int was = 0;
  91.         for (int k = 0; k < q; k++){
  92.             int a, b, cc;
  93.             cin >> a >> b >> cc;
  94.             int l = (a + was) % (n - b + 1) + 1;
  95.             int r = l + b - 1;
  96.             int t = (cc + was) % (c + 1);          
  97.             if (dp[r][t] >= l && dp[r][t] != -1){
  98.                 res.push_back('Y');
  99.                 was++;
  100.             }
  101.             else
  102.                 res.push_back('N');
  103.         }
  104.         cout << res << endl;
  105.     }
  106.     return 0;
  107. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top