Submission #597601

#TimeUsernameProblemLanguageResultExecution timeMemory
597601cfalasPainting Walls (APIO20_paint)C++17
28 / 100
1579 ms12624 KiB
#include<bits/stdc++.h> using namespace std; #include "paint.h" #define mp make_pair #define INF 10000000 #define MOD 1000000007 #define MID ((l+r)/2) #define HASHMOD 2305843009213693951 #define ll long long #define ull unsigned long long #define F first #define S second typedef pair<ll, ll> ii; typedef pair<ii, int> iii; typedef vector<int> vi; typedef vector<ii> vii; typedef map<int, int> mii; #define EPS 1e-6 #define FOR(i,n) for(int i=0;i<((int)(n));i++) #define FORi(i,a,b) for(int i=((int)(a));i<((int)(b));i++) #define FOA(v, a) for(auto v : a) int minimumInstructions( int N, int M, int K, std::vector<int> C, vector<int> A, vector<std::vector<int>> B) { map<int, vector<int>> f; FOR(i,M){ FOA(v, B[i]){ f[v].push_back(i); } } set<int> ok; FOR(j,N-M+1){ vi curr; set<int> poss; FOA(v, f[C[j]]) poss.insert(v); FORi(i,1,M){ set<int> npos; FOA(v, f[C[j+i]]){ int pp = (v-i + M)%M; if(poss.count(pp)) npos.insert(pp); } poss = npos; } if(poss.empty()) continue; ok.insert(j); } if(!ok.count(0)) return -1; int p=0; int cp=M; int ans = 1; while(cp<N){ //cout<<p<<" "<<cp<<endl; while(!ok.count(cp)) cp--; if(cp<=p) return -1; p = cp; cp+=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...