Submission #908490

#TimeUsernameProblemLanguageResultExecution timeMemory
908490ItamarPainting Walls (APIO20_paint)C++14
100 / 100
647 ms14580 KiB
#include "paint.h" using namespace std; #include <vector> #define vi vector<int> int minimumInstructions(int N, int M, int K, std::vector<int> C,std::vector<int> A, std::vector<std::vector<int>> B) { int ans = 0; vector<bool> dp(N); int sum = 0; vi g(M); vector<vi> fr(K); for (int i = 0; i < M; i++) { for (int j = 0; j < A[i]; j++) { fr[B[i][j]].push_back(i); } } for (int i = N - M; i < N; i++) { for (int j : fr[C[i]]) { g[(M+i-j)%M]++; if (g[(M+i - j) % M] == M)sum++; } } dp[N - M] = (sum > 0); for (int i = N - M-1; i >= 0; i--) { for (int j : fr[C[i]]) { g[(M + i - j) % M]++; if (g[(M + i - j) % M] == M)sum++; } for (int j : fr[C[M+i]]) { g[(M + i - j) % M]--; if (g[(M + i - j) % M] == M-1)sum--; } dp[i] = (sum>0); } int maxi = -1, nex = 0; for (int i = 0; i <= N - M; i++) { if (dp[i])maxi = i + M - 1; if (i == N - M) { if (maxi == N-1)return ans + 1; return -1; } if (i == nex) { if (maxi < i)return -1; nex = maxi+1; maxi = -1; ans++; } } }

Compilation message (stderr)

paint.cpp: In function 'int minimumInstructions(int, int, int, std::vector<int>, std::vector<int>, std::vector<std::vector<int> >)':
paint.cpp:7:19: warning: control reaches end of non-void function [-Wreturn-type]
    7 |  vector<bool> dp(N);
      |                   ^
#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...