Submission #1190567

#TimeUsernameProblemLanguageResultExecution timeMemory
1190567epicci23Mosaic (IOI24_mosaic)C++20
0 / 100
64 ms10052 KiB
#include "bits/stdc++.h"
#include "mosaic.h"
#define all(v) v.begin() , v.end()
#define sz(a) (int)a.size()
using namespace std;

const int N = 5005;
int n, q;
int row[N], col[N];
int ar[N][N], dp_ar[N][N];

long long calc(int t, int b, int l, int r){
  return dp_ar[b][r] - dp_ar[b][l - 1] - dp_ar[t - 1][r] + dp_ar[t - 1][l - 1];
}

vector<long long> mosaic(vector<int> X, vector<int> Y, vector<int> T, vector<int> B, vector<int> L, vector<int> R) {
  n = sz(X);

  for(int i = 1; i <= n; i++) col[i] = X[i - 1];
  for(int i = 1; i <= n; i++) row[i] = Y[i - 1];
  
  for(int i = 1; i <= n; i++){
    for(int j = 1; j <= n; j++){
      if(i == 1) ar[i][j] = col[j];
      else if(j == 1) ar[i][j] = row[i];
      else ar[i][j] = min(1 - ar[i-1][j], 1 - ar[i][j-1]);
      
      dp_ar[i][j] = dp_ar[i-1][j] - dp_ar[i][j-1] - dp_ar[i-1][j-1] + (ar[i][j] == 1);
    }
  }

  vector<long long> ans(q, 0);

  q = sz(B);
  for(int i = 0 ; i < q; i++){
  	int t = T[i], b = B[i], l = L[i], r = R[i];
    ans[i] = calc(t + 1, b + 1, l + 1, r + 1);
  }

  return ans;
}

/*void _(){
  cin >> n;
  for(int i = 1; i <= n; i++) cin >> col[i];
  for(int i = 1; i <= n; i++) cin >> row[i];
  
  for(int i = 1; i <= n; i++){
    for(int j = 1; j <= n; j++){
      if(i == 1) ar[i][j] = col[j];
      else if(j == 1) ar[i][j] = row[i];
      else ar[i][j] = min(1 - ar[i-1][j], 1 - ar[i][j-1]);
      
      dp_ar[i][j] = dp_ar[i-1][j] + dp_ar[i][j-1] - dp_ar[i-1][j-1] + (ar[i][j] == 1);
    }
  }

  cin >> q;
  for(int i=1;i<=q;i++){
  	int t,b,l,r;
  	cin >> t >> b >> l >> r;
    cout << calc(t, b, l, r) << '\n';
  }
}*/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...