Submission #1142958

#TimeUsernameProblemLanguageResultExecution timeMemory
1142958ag_1204Mosaic (IOI24_mosaic)C++20
22 / 100
1018 ms2162688 KiB
#include "mosaic.h"
#include <bits/stdc++.h>
#define int long long
using namespace std;
vector<int> mosaic(vector<signed> X, vector<signed> Y,vector<signed> T, vector<signed> B,vector<signed> L, vector<signed> R) {
    int n=size(X);
    int grid[n+1][n+1],cnt[n+1][n+1];
    memset(cnt,0,sizeof(cnt));
    for (int i=1;i<=n;i++) {
      int x=X[i-1]; grid[1][i]=x;
      cnt[1][i]=cnt[1][i-1]+x;
    }
    for (int i=1;i<=n;i++) {
      int y=Y[i-1]; grid[i][1]=y;
      cnt[i][1]=cnt[i-1][1]+y;
    }
    for (int i=2;i<=n;i++) {
      for (int j=2;j<=n;j++) {
        if (grid[i][j-1]+grid[i-1][j]>0) grid[i][j]=0;
        else grid[i][j]=1;
        cnt[i][j]=cnt[i-1][j]+cnt[i][j-1]-cnt[i-1][j-1]+grid[i][j];
      }
    }
    /*
    for (int i=1;i<=n;i++) {
      for (int j=1;j<=n;j++) cout<<grid[i][j]<<" ";
      cout<<endl;
    }
    cout<<endl;
    for (int i=1;i<=n;i++) {
      for (int j=1;j<=n;j++) cout<<cnt[i][j]<<" ";
      cout<<endl;
    }
    */
    int q=size(T);
    vector<int> C;
    for (int i=0;i<q;i++){
      int a=T[i],b=B[i],c=L[i],d=R[i]; b++; d++;
      C.push_back(cnt[b][d]+cnt[a][c]-cnt[a][d]-cnt[b][c]);
    }
    return C;
}
#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...