Submission #1200830

#TimeUsernameProblemLanguageResultExecution timeMemory
1200830edogawa_somethingPainting Walls (APIO20_paint)C++20
28 / 100
16 ms32500 KiB
#include "paint.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef vector<ll> vii; typedef pair<ll,ll> pii; #define pb push_back #define F first #define S second #define all(v) v.begin(),v.end() const ll M=1e5+10; ll n,m,c[M],a[M]; ll b[201][M],chk[505][202],cc[M]; int minimumInstructions(int N,int M,int K,vector<int>C,vector<int>A,vector<vector<int>>B) { n=N,m=M; for(int i=0;i<n;i++) c[i]=C[i]; for(int i=0;i<m;i++){ a[i]=A[i]; for(int j=0;j<a[i];j++) b[i][j]=B[i][j]; } for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ ll l=0,r=a[j]-1,mid; while(l<=r){ mid=((l+r)>>1); if(b[j][mid]==c[i]){ chk[i][j]=1; break; } if(b[j][mid]<c[i]) l=mid+1; else r=mid-1; } } } for(int i=0;i<n-m+1;i++){ for(int j=0;j<m;j++){ for(int l=0;l<m;l++){ if(!chk[i+l][(j+l)%m]) break; if(l==m-1) cc[i]=1; } if(cc[i]) break; } } ll mx=-1,cur=-1; int res=0; for(int i=0;i<n;i++){ if(cc[i]) mx=max(mx,i+m-1); if(i>mx){ return -1; } if(i>cur) cur=mx,res++; } return res; }
#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...