Submission #283553

#TimeUsernameProblemLanguageResultExecution timeMemory
283553NaimSSVođe (COCI17_vode)C++14
120 / 120
373 ms300024 KiB
#include <bits/stdc++.h> #define ld long double #define endl "\n" #define fastio ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); #define pb(x) push_back(x) #define mp(a,b) make_pair(a,b) #define ms(v,x) memset(v,x,sizeof(v)) #define all(v) v.begin(),v.end() #define ff first #define ss second #define rep(i, a, b) for(int i = a; i < (b); ++i) #define per(i, a, b) for(int i = b-1; i>=a ; i--) #define trav(a, x) for(auto& a : x) #define allin(a , x) for(auto a : x) #define td(v) v.begin(),v.end() #define sz(v) (int)v.size() //#define int long long using namespace std; typedef vector<int> vi; #define y1 abacaba #define left sefude #define db(x) cerr << #x <<" == "<<x << endl; #define db2(x,y) cerr<<#x <<" == "<<x<<", "<<#y<<" == "<<y<<endl; typedef long long ll; typedef pair<int,int> pii; inline ll mod(ll n, ll m ){ ll ret = n%m; if(ret < 0) ret += m; return ret; } ll gcd(ll a, ll b){return (b == 0LL ? a : gcd(b, a%b));} ll exp(ll a,ll b,ll m){ if(b==0LL) return 1LL; if(b==1LL) return mod(a,m); ll k = mod(exp(a,b/2,m),m); if(b&1LL){ return mod(a*mod(k*k,m),m); } else return mod(k*k,m); } const int N = 5050; int dp[N*3 + 10][N]; int v[N]; int pre[N]; vi ids; int32_t main(){ fastio; int n,m,k; cin >> n >> m >> k; for(int i=1;i<=n;i++){ ids.pb(i); cin >> v[i]; } int cur = 1; while(sz(ids)< 3*N - 1){ ids.pb(cur); cur = (cur == n ? 1 : cur + 1); } for(int pos = sz(ids)-1;pos>=0;pos -- ){ if(pos == sz(ids) - 1){ for(int j=0;j<m-1;j++)dp[pos][j] = 1; dp[pos][m-1] = dp[pos][m] = 0; }else{ int cur = v[ids[pos]]; int nxt = v[ids[pos+1]]; for(int j=0;j<m-1;j++){ dp[pos][j]=0; if(cur == nxt){ dp[pos][j] = (pre[min(m,j + k)] - pre[j]) > 0; }else dp[pos][j] = (pre[min(m,j+k)]-pre[j]!=min(m,j+k)-j); } dp[pos][m-1] = dp[pos][m] = 0; } for(int j=0;j<=m;j++)pre[j] = (j == 0 ? 0 : pre[j-1]) + dp[pos][j]; } for(int pos=0;pos<n;pos++){ if(dp[pos][0] == 1)cout << v[ids[pos]] <<" "; else cout <<!v[ids[pos]] <<" "; } cout << endl; // math -> gcd it all // Did u check N=1? Did you switch N,M? }
#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...
#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...