Submission #1282968

#TimeUsernameProblemLanguageResultExecution timeMemory
1282968RaresMosaic (IOI24_mosaic)C++20
22 / 100
250 ms307300 KiB
#include <bits/stdc++.h>
using namespace std;
/**ifstream fin ("date.in");
ofstream fout ("date.out");
#define cin fin
#define cout fout**/

typedef long long ll;
const int MAXN=5010;
const int MAXQ=200010;

vector <ll> rez;

int a[MAXN][MAXN],n,q,l[MAXN],c[MAXN];
ll s[MAXN][MAXN];

struct query{
    int x1,y1,x2,y2;
}v[MAXQ];

ll f (int x1, int x2, int y1, int y2){
    return s[x2][y2]-s[x1-1][y2]-s[x2][y1-1]+s[x1-1][y1-1];
}

void solve (){
    for (int i=1;i<=n;++i){
        a[1][i]=l[i];
    }

    for (int i=1;i<=n;++i){
        a[i][1]=c[i];
    }
    for (int i=2;i<=n;++i){
        for (int j=2;j<=n;++j){
            if (a[i][j-1]==a[i-1][j] and a[i][j-1]==0) a[i][j]=1;
            else a[i][j]=0;
        }
    }

    for (int i=1;i<=n;++i){
        for (int j=1;j<=n;++j){

            s[i][j]=a[i][j]+s[i][j-1]+s[i-1][j]-s[i-1][j-1];

        }

    }

    for (int i=1;i<=q;++i){

        rez.push_back (f (v[i].x1,v[i].x2,v[i].y1,v[i].y2));
    }


}

vector<ll> mosaic(vector<int> x, vector<int> y,vector<int> x1, vector<int> x2,vector<int> y1, vector<int> y2){
    n=x.size ();
    q=x1.size ();
    for (int i=0;i<n;++i){
        l[i+1]=x[i];
        c[i+1]=y[i];
    }
    for (int i=0;i<q;++i){
        x1[i]++;
        x2[i]++;
        y1[i]++;
        y2[i]++;
        v[i+1]={x1[i],y1[i],x2[i],y2[i]};
    }
    solve ();

    return rez;
}
#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...