Submission #399672

#TimeUsernameProblemLanguageResultExecution timeMemory
399672A_D벽 칠하기 (APIO20_paint)C++14
40 / 100
1569 ms22448 KiB
//#include "paint.h" #include <bits/stdc++.h> #define pair<int,int> using namespace std; const int NN=1e5+100; bool freq[NN]; vector<int> like[NN]; vector<int> c; vector<int> a; map<int,int> mp3; map<int,int> mp2; int n,m,k; map<int,bool> mp[NN]; bool ok(int x,int y) { for(int l=0;l<m;l++){ if(mp[(x+l)%m][c[y+l]]==0){ return 0; } } return 1; } int minimumInstructions( int N, int M, int K, std::vector<int> C, std::vector<int> A, std::vector<std::vector<int>> B) { a=A; c=C; n=N; m=M; k=K; int maxx=0; // cout<<5<<endl; for(int i=0;i<m;i++){ for(auto x:B[i]){ mp[i][x]=1; like[x].push_back(i); } } for(int i=0;i<k;i++){ maxx=max(maxx,(int)like[i].size()); } // cout<<5<<endl; int idx=-1; int cnt=0; if(maxx<=1){ for(int i=0;i<n;i++){ int v=c[i]; if(like[v].empty())return -1; if(like[v][0]==idx){ cnt++; } else{ cnt=1; idx=like[v][0]; } if(cnt>=m){ freq[i-m+1]=1; } idx++; idx%=m; } } else if(n<=-1){ for(int j=0;j<=n-m;j++){ for(auto i:like[c[j]]){ if(ok(i,j)){ freq[j]=1; break; } } } } else{ for(int i=0;i<n;i++){ mp2.clear(); int mox=0; for(auto x:like[c[i]]){ mp2[x]=mp3[(x-1+m)%m]+1; mox=max(mox,mp2[x]); } if(mox>=m){ freq[i-m+1]=1; } mp3.clear(); mp3=mp2; } } int mx=0; int ans=0; int i=0; // cout<<5<<endl; while(mx<n){ int v=mx; // cout<<mx<<endl; ans++; while(i<=mx){ if(freq[i]){ v=max(v,i+m); } i++; } if(v==mx)break; mx=v; } if(mx<n)return -1; return ans; } /* int main() { int N, M, K; assert(3 == scanf("%d %d %d", &N, &M, &K)); std::vector<int> C(N); for (int i = 0; i < N; ++i) { assert(1 == scanf("%d", &C[i])); } std::vector<int> A(M); std::vector<std::vector<int>> B(M); for (int i = 0; i < M; ++i) { assert(1 == scanf("%d", &A[i])); B[i].resize(A[i]); for (int j = 0; j < A[i]; ++j) { assert(1 == scanf("%d", &B[i][j])); } } int minimum_instructions = minimumInstructions(N, M, K, C, A, B); printf("%d\n", minimum_instructions); return 0; } */ /* 8 3 5 3 3 1 3 4 4 2 2 3 0 1 2 2 2 3 2 3 4 */

Compilation message (stderr)

paint.cpp:3:9: warning: ISO C++11 requires whitespace after the macro name
    3 | #define pair<int,int>
      |         ^~~~
#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...