제출 #576395

#제출 시각아이디문제언어결과실행 시간메모리
576395radalPainting Walls (APIO20_paint)C++17
40 / 100
50 ms15720 KiB
#include <bits/stdc++.h> #include "paint.h" #pragma GCC target("sse,sse2,sse4,avx2") #pragma GCC optimize("unroll-loops,O2") #define rep(i,l,r) for (int i = l; i < r; i++) #define repr(i,r,l) for (int i = r; i >= l; i--) #define X first #define Y second #define all(x) (x).begin() , (x).end() #define pb push_back #define endl '\n' #define debug(x) cerr << #x << " : " << x << endl; using namespace std; typedef long long ll; typedef long double ld; typedef pair<int,int> pll; constexpr int N = 1e5+20,mod = 998244353,inf = 1e9+10; inline int mkay(int a,int b){ if (a+b >= mod) return a+b-mod; // if (a+b < 0) return a+b+mod; return a+b; } inline int poww(int a,int k){ if (k < 0) return 0; int z = 1; while (k){ if (k&1) z = 1ll*z*a%mod; a = 1ll*a*a%mod; k >>= 1; } return z; } vector<int> f[N],a,c; vector<vector<int> > b; int n,m,k; inline bool check(int ind){ if (ind+m-1 >= n) return 0; for (int i : f[c[ind]]){ bool fl = 1; rep(j,ind+1,ind+m){ i++; if (i == m) i = 0; int y = lower_bound(all(f[c[j]]),i)-f[c[j]].begin(); if (y == (int)f[c[j]].size() || f[c[j]][y] != i){ fl = 0; break; } } if (fl) return 1; } return 0; } inline int bs(int l,int r){ int mid; while (r-l > 1){ mid = (l+r) >> 1; if (check(mid)) l = mid; else{ bool fl = 0; rep(j,0,800){ if (mid+j >= r) break; if (check(mid+j)){ l = mid+j; fl = 1; break; } } if (fl) continue; r = mid; } } return l; } int minimumInstructions(int nn,int mm,int kk,vector<int> C,vector<int> A,vector<vector<int>> B){ n = nn; m = mm; k = kk; c = C; a = A; b = B; rep(i,0,m){ for (int x : b[i]) f[x].pb(i); } rep(i,0,n) if (f[c[i]].empty()) return -1; if (!check(0)) return -1; int cur = m,ans = 1; while (cur < n){ int x = bs(cur-m,cur+1); if (x == cur-m) return -1; cur = x+m; ans++; } return ans; }
#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...