제출 #1229966

#제출 시각아이디문제언어결과실행 시간메모리
1229966MuhammadSaramZalmoxis (BOI18_zalmoxis)C++20
0 / 100
1102 ms61516 KiB
#include <bits/stdc++.h> using namespace std; #define dd double #define all(v) v.begin(), v.end() const int M = 31; const dd eps = 0.000001; vector<dd> ind[M]; int main() { ios::sync_with_stdio(0); cin.tie(NULL), cout.tie(NULL); int n,k; cin>>n>>k; int a[n]; for (int i=0;i<n;i++) cin>>a[i],ind[a[i]].push_back(i); for (int x=0;x<M;x++) { int m=ind[x].size(); for (int ct=0;ct<m;ct++) { dd i=ind[x][ct]; dd pr=0,nx=n; for (int y=x+1;y<M;y++) { int o=lower_bound(all(ind[y]),i)-begin(ind[y]); if (o) pr=max(pr,ind[y][o-1]); if (o<ind[y].size()) nx=min(nx,ind[y][o]); } int cnt=0; for (int y=0;y<x;y++) { int q=lower_bound(all(ind[y]),pr)-begin(ind[y]); int w=lower_bound(all(ind[y]),nx)-begin(ind[y]); cnt=cnt/2+q-w; } cnt/=2; if (cnt%2) k--,ind[x].push_back(i+eps); } sort(all(ind[x])); } vector<pair<dd,int>> v; for (int x=0;x<M;x++) for (auto i:ind[x]) v.push_back({i,x}); sort(all(v)); for (auto [i,x]:v) { dd j=floor(i); vector<int> p={x}; int cnt=0; if (j<i) { while (k && p.size()) { int s=p.back();p.pop_back(); if (!s) { cnt++; continue; } k--,p.push_back(s-1),p.push_back(s-1); } } for (int s:p) cout<<s<<' '; while (cnt--) cout<<0<<' '; } cout<<endl; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...