Submission #576556

#TimeUsernameProblemLanguageResultExecution timeMemory
576556codr0Painting Walls (APIO20_paint)C++14
100 / 100
484 ms13024 KiB
// Code by Parsa Eslami #include "paint.h" #include <bits/stdc++.h> #define ll long long #define pii pair<int,int> #define pll pair<ll,ll> #define bit(i,j) ((j>>i)&1) #define minm(x,y) x=min(x,y) #define maxm(x,y) x=max(x,y) #define FOR(i,a,b) for(int i=a;i<=b;i++) #define FORR(i,a,b) for(int i=a;i>=b;i--) #define S second #define F first #define pb push_back #define SZ(x) (int)x.size() #define all(x) x.begin(),x.end() #define err(x) cout<<#x<<": "<<x<<'\n' #define wtf cout<<"WHAT THE FUCK!\n" #define dmid int mid=(r+l)/2 #define lc 2*id #define rc 2*id+1 using namespace std; int minimumInstructions(int n,int m,int k,vector<int> C,vector<int> A,vector<std::vector<int>> B){ bool x[n]={}; int num[2][m]; FOR(w,0,1) FOR(i,0,m-1) num[w][i]=0; vector<int> f[k]; FOR(i,0,m-1) FOR(j,0,A[i]-1) f[B[i][j]].pb(i); FOR(i,0,n-1){ bool w=i&1; for(int v:f[C[i]]){ num[w][v]=num[!w][(v-1+m)%m]+1; if(num[w][v]>=m) x[i-m+1]=1; } if(i>0) for(int v:f[C[i-1]]) num[!w][v]=0; } int rt=1; int lch=0; int rch=m; if(!x[0]) return -1; while(1){ if(rch>=n) break; int last=-1; FOR(j,lch+1,min(n-1,rch)) if(x[j]) last=j; if(last==-1) return -1; lch=min(n-1,rch); rch=last+m; rt++; } return rt; }
#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...