Submission #1238672

#TimeUsernameProblemLanguageResultExecution timeMemory
1238672ricardsjansonsMosaic (IOI24_mosaic)C++20
22 / 100
341 ms38024 KiB
#include "mosaic.h"
#include <bits/stdc++.h>
#define ll long long
using namespace std;

vector<long long>mosaic(vector<int>x,vector<int>y,
                        vector<int>t,vector<int>b,
                        vector<int>l,vector<int>r){
    int n=x.size();
    int q=t.size();
    map<pair<int,int>,int>m;
    vector<int>x1(n),y1(n);
    if(n>1){
        x1[0]=y[1];
        for(int i=1;i<n;i++){
            x1[i]=(x1[i-1]==0&&x[i]==0);
        }
        y1[0]=x[1];
        for(int i=1;i<n;i++){
            y1[i]=(y1[i-1]==0&&y[i]==0);
        }
    }
    if(n>2){
        int p=y1[2];
        for(int i=2;i<n;i++){
            m[{2,i}]=p=(p==0&&x1[i]==0);
        }
        p=x1[2];
        for(int i=2;i<n;i++){
            m[{i,2}]=p=(p==0&&y1[i]==0);
        }
    }
    vector<ll>c(q, 0);
    for(int i=0;i<q;i++){
        if(t[i]==0){
            c[i]=x[l[i]];
            continue;
        }
        if(l[i]==0){
            c[i]=y[t[i]];
            continue;
        }
        if(t[i]==1){
            c[i]=x1[l[i]];
            continue;
        }
        if(l[i]==1){
            c[i]=y1[t[i]];
            continue;
        }
        int a=min(t[i],l[i]);
        a-=2;
        c[i]=m[{t[i]-a,l[i]-a}];
    }
    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...