#include "mosaic.h"
#include <iostream>
#include <iomanip>
#include <string>
#include <math.h>
#include <algorithm>
#include <cstring>
#include <numeric>
#include <vector>
#include <bitset>
#include <map>
#include <set>
#include <queue>
#include <deque>
#include <stack>
#include <unordered_map>
#include <unordered_set>
#include <cassert>
using namespace std;
#define dbg(x) cerr<<#x<<": "<<x<<"\n";
/*
ValeNotta lover
*/
vector<long long> mosaic(vector<int> X, vector<int> Y, vector<int> T, vector<int> B, vector<int> L, vector<int> R) {
int n=(int)X.size();
vector<vector<long long>>dp(n+1, vector<long long>(n+1));
for(int i=1 ; i<=n ; i++){
for(int j=1 ; j<=n ; j++){
if(i==1) dp[i][j]=X[j-1];
else if(j==1) dp[i][j]=Y[i-1];
else{
if(dp[i-1][j]==0 && dp[i][j-1]==0) dp[i][j]=1;
}
}
}
for(int i=1 ; i<=n ; i++){
for(int j=1 ; j<=n ; j++){
// cout<<dp[i][j]<<" ";
dp[i][j]+=dp[i-1][j]+dp[i][j-1]-dp[i-1][j-1];
}
// cout<<"\n";
}
n=(int)T.size();
vector<long long>ans(n);
for(int i=0 ; i<n ; i++){
T[i]++; B[i]++; L[i]++; R[i]++;
ans[i]=dp[B[i]][R[i]]-dp[T[i]-1][R[i]]-dp[B[i]][L[i]-1]+dp[T[i]-1][L[i]-1];
}
return ans;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |