이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |