Submission #1088797

#TimeUsernameProblemLanguageResultExecution timeMemory
1088797BABY_GANGSTERPainting Walls (APIO20_paint)C++14
100 / 100
379 ms289492 KiB
#pragma GCC optimize("Ofast,unroll-loops") #include<bits/stdc++.h> //#define int long long //#define ll long long #define down cout<<'\n'; #define debug cout<<" cucuucucuuu",down #define NHP ios_base::sync_with_stdio(0);cout.tie(0);cin.tie(0); #define modwwe int t;cin>>t; while(t--) #define bit(i,j) (i>>j&1) #define sobit(a) __builtin_popcountll(a) #define task "test" #define fin(x) freopen(x".inp","r",stdin) #define fou(x) freopen(x".ans","w",stdout) #define pb push_back #define checktime cerr << (double)clock() / CLOCKS_PER_SEC * 1000 << " ms"; using namespace std; #define getchar_unlocked getchar inline int scan() { char c = getchar_unlocked(); int x = 0; while(c<'0'||c>'9') { c=getchar_unlocked(); } while(c>='0'&&c<='9') { x=(x<<1)+(x<<3)+c-'0'; c=getchar_unlocked(); } return x; } void phongbeo(); const int inf=1e9; const int mod2=1e9+9; const int mod1=998244353; struct icd { long double a; int b; }; struct ib { int a; int b; }; struct ic { int a,b,c; }; struct id { int a,b,c,d; }; struct ie { int a,b,c,d,e; }; int n,m,s1,s2,s4,s3,sf,k,s5,s6,mx,s7,s8,s9,mx2,res,dem2=0,dem=0,s33,dem3,dem4,l,r,mid,l2,r2,center; int i,s10,s12; int kk; int el=29; vector<int> v[100001]; int dp[100001][701]; int a[100001]; bool b[100001]; int c[100001]; vector<int> v2; int minimumInstructions(int _n, int _m, int _K, vector<int> _C, vector<int> _A, vector<vector<int>> _B) { n=_n; m=_m; k=_K; for(int i=1; i<=n; i++) a[i]=_C[i-1]; for(int j=1; j<=m; j++) { l=_A[j-1]; for(int i=1; i<=l; i++) { r=_B[j-1][i-1]; v[r].pb(j); } } for(int i=1; i<=n; i++) { l=0; dem=0; if(v[a[i]].size()==0){return -1; } for(auto x:v[a[i]]) { dp[i][dem]=i; if(i!=1) { s10=v[a[i-1]].size(); while(l<s10&&v[a[i-1]][l]<x) { l++; } if(l>=1) if(v[a[i-1]][l-1]==x-1) dp[i][dem]=min(dp[i][dem],dp[i-1][l-1]); s8=v[a[i-1]].size()-1; if(x==1&&v[a[i-1]].back()==m)dp[i][dem]=min(dp[i][dem],dp[i-1][s8]); } if(dp[i][dem]<=i-m+1) b[i-m+1]=1; dem++; } } s5=-m; s4=0; for(int i=1; i<=n; i++) { c[i]+=c[i-1]; if(b[i])s5=i; if(c[i]==0&&s5+m<=i) { return -1; } else if(c[i]==0) s4++,c[i]=1,c[s5+m]--; } return s4; } /* main() { cout<<minimumInstructions(8, 3, 5, {3, 3, 1, 3, 4, 4, 2, 2}, {3, 2, 2}, {{0, 1, 2}, {2, 3}, {3, 4}}); }*/
#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...