This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
// 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 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... |