Submission #242146

#TimeUsernameProblemLanguageResultExecution timeMemory
242146Nayeon_A_BunnyTelefoni (COCI17_telefoni)C++17
40 / 80
1086 ms5744 KiB
#include <bits/stdc++.h> using namespace std; template<typename TH> void _dbg(const char* sdbg, TH h) { cerr << sdbg << " = " << h << "\n"; } template<typename TH, typename... TA> void _dbg(const char* sdbg, TH h, TA... t) { while (*sdbg != ',') cerr << *sdbg++; cerr << " = " << h << ","; _dbg(sdbg + 1, t...); } #define db(...) _dbg(#__VA_ARGS__, __VA_ARGS__) #define chkpt cerr << "------\n"; const int N=3e5+5,INF=1e9; int n,d,a[N]; int nxt[N],b[N]; void Sub1(){ int ans=INF; vector<int> freePosList; for(int i=1;i<=n;++i){ if(a[i]==0){ freePosList.push_back(i); } } int nFree=freePosList.size(); int maxBit=1<<nFree; for(int mask=0;mask<maxBit;++mask){ // if(mask!=4){ // continue; // } for(int i=1;i<=n;++i){ if(a[i]==1){ b[i]=1; } } for(int i=0;i<nFree;++i){ b[freePosList[i]]=(mask>>i)&1; } nxt[n]=n+1; for(int i=n-1;i>=1;--i){ nxt[i]=(b[i+1]==1)?(i+1):nxt[i+1]; } int i=1; while(i<n){ if(nxt[i]-i>d){ break; } i=nxt[i]; } if(i==n){ // if(__builtin_popcount(mask)==1){ // for(int i=0;i<nFree;++i){ // if((mask>>i)&1){ // db(freePosList[i]); // } // } // db(mask); // chkpt; // } ans=min(ans,__builtin_popcount(mask)); } } cout<<ans<<'\n'; } int main() { // freopen("COCI17_TELEFONI.INP","r",stdin); ios_base::sync_with_stdio(0); cin.tie(0); cin>>n>>d; for(int i=1;i<=n;++i){ cin>>a[i]; } Sub1(); // nxt[n]=n+1; // for(int i=n-1;i>=1;--i){ // nxt[i]=a[i+1]?(i+1):nxt[i+1]; // } // int last=1; // while(last<=n){ // if(nxt[last]-last>d){ // break; // } // last=nxt[last]; // } // int ans=0; // if(last<n){ // last+=d; // while(last<n){ // ans+=a[last]==0; // last+=d; // } // } // cout<<ans<<'\n'; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...