제출 #64437

#제출 시각아이디문제언어결과실행 시간메모리
64437Bodo171Zalmoxis (BOI18_zalmoxis)C++14
100 / 100
534 ms45356 KiB
#include <iostream> #include <fstream> #include <vector> using namespace std; const int nmax=1000*1000+5; vector<int> trebuie[nmax]; int v[nmax],orig[nmax],act[nmax],niu[nmax],niuact[nmax]; int n,k,total,i,nr,newnr,j,p,idx; void solve(int x) { if(x==0) { cout<<x<<' '; return; } if(k>total) { total++; solve(x-1); solve(x-1); } else cout<<x<<' '; } int main() { // freopen("data.in","r",stdin); cin>>n>>k; for(i=1;i<=n;i++) { cin>>v[i]; orig[i]=v[i]; act[i]=i; } nr=n;v[n+1]=-1; for(i=0;i<30;i++) { for(j=1;j<=nr;j++) { if(v[j]==i) { p=j; while(v[p]==i&&p<=nr) { p++; } p--; if((p-j+1)&1) { trebuie[act[p]].push_back(i); total++; } j=p; } } newnr=0; for(j=1;j<=nr;j++) if(v[j]==i) { p=j; while(v[p]==i&&p<=nr) { p++; } p--; for(idx=1;idx<=(p-j+2)/2;idx++) { ++newnr; niuact[newnr]=act[p]; niu[newnr]=v[p]+1; } j=p; } else { ++newnr; niuact[newnr]=act[j]; niu[newnr]=v[j]; } nr=newnr; for(j=1;j<=nr;j++) v[j]=niu[j],act[j]=niuact[j]; } for(i=1;i<=n;i++) { cout<<orig[i]<<' '; for(j=0;j<trebuie[i].size();j++) solve(trebuie[i][j]); } return 0; }

컴파일 시 표준 에러 (stderr) 메시지

zalmoxis.cpp: In function 'int main()':
zalmoxis.cpp:86:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for(j=0;j<trebuie[i].size();j++)
                 ~^~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...