제출 #1233329

#제출 시각아이디문제언어결과실행 시간메모리
1233329thelegendary08벽 칠하기 (APIO20_paint)C++17
28 / 100
1596 ms15432 KiB
#include "paint.h" #include<bits/stdc++.h> #define int long long #define mp make_pair #define pb push_back #define f0r(i,n) for(signed i = 0; i<n; i++) #define FOR(i, k, n) for(signed i = k; i<n; i++) #define vi vector<int> #define vpii vector<pair<int,int>> #define pii pair<int,int> #define vb vector<bool> #define mii map<int,int> #define vvi vector<vector<int>> #define vout(v) for(auto u : v)cout<<u<<' '; cout<<endl; #define dout(a) cout<<a<<' '<<#a<<endl; #define dout2(a,b) cout<<a<<' '<<#a<<' '<<b<<' '<<#b<<endl; using namespace std; signed minimumInstructions( signed n, signed m, signed k, std::vector<signed> c, std::vector<signed> a, std::vector<std::vector<signed>> b) { map<pii, int>state; vpii w; vb can(n); vector<set<int>> f(k); f0r(i,m){ f0r(j, a[i]){ f[b[i][j]].insert(i); // state[mp(i, b[i][j])] = -1; // w.pb(mp(i, b[i][j])); } } /* f0r(i,n){ for(auto u : f[c[i]]){ state[mp(i, u)] = -1; w.pb(mp(i,u)); } } sort(w.begin(), w.end()); */ f0r(D, n){ // cout<<p.first<<' '<<p.second<<endl; if(can[D])continue; for(auto v : f[c[D]]){ int d = D; // int d = p.first; int v = p.second; int st = d; int cnt = 1; if(m == 1){ can[d] = 1; // state[p] = 1; } // else state[p] = 0; while(1){ // dout2(d,v); d++; v++; v %= m; if(d >= n)break; if(!f[c[d]].count(v))break; if(can[d])continue; if(st + m - 1 <= d){ int offset = m-1; // int nv = (v - offset) % m; // if(nv < 0)nv += m; can[d-offset] = 1; } } } } // vout(can); vi cans; f0r(i, n){ if(can[i])cans.pb(i); } if(!can[0])return -1; if(cans.back() != n - m)return -1; int cur = 0; int cnt = 1; int ep = n - m; while(cur < ep){ cnt++; int lo = 0; int hi = cans.size() - 1; //last one less than or equal to cur + m while(lo < hi){ int mid = lo + (hi - lo + 1) / 2; if(cans[mid] <= cur + m){ lo = mid; } else{ hi = mid - 1; } } if(cans[lo] == cur)return -1; cur = cans[lo]; } return cnt; return -1; }
#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...