이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include<iostream>
#include<stdio.h>
#include<vector>
#include<cmath>
#include<queue>
#include<string.h>
#include<map>
#include<set>
#include<algorithm>
#define ll long long
#define pi pair < ll,ll >
#define mp(a,b) make_pair(a,b)
#define rep(i,a,b) for(int i = a;i < b;i++)
#define N 3000004
#define INF 1e9+7
using namespace std;
ll n,k,ar[N],orig[N];
set < pi > s;
ll epomeno[N],proigoumeno[N];
vector < pi > res;
multiset < pi > varta;
multiset < pi > answers;
void solve()
{
if((*s.begin()).first == 30)
return;
set < pi >::iterator it = s.begin();
pi cur = *it;
swap(cur.first,cur.second);
// cout << cur.first << " " << cur.second << endl;
if(epomeno[cur.first] != n && ar[epomeno[cur.first]] == cur.second)
{
epomeno[cur.first] = epomeno[epomeno[cur.first]];
s.erase(s.begin());
}
else
{
res.push_back(mp(cur.second,cur.first));
}
s.erase(s.begin());
s.insert(mp(cur.second+1,cur.first));
ar[cur.first]++;
solve();
return;
}
int main()
{
ios_base::sync_with_stdio(false);
cin >> n >> k;
rep(i,0,n)
{
cin >> ar[i];
orig[i] = ar[i];
epomeno[i] = i+1;
proigoumeno[i+1] = i;
s.insert(mp(ar[i],i));
}
solve();
rep(i,0,res.size())
varta.insert(res[i]);
ll cur = 0;
ll sz = res.size();
res.clear();
while(sz < k)
{
pi f = *varta.begin();
varta.erase(varta.begin());
if(f.first == 0)
{
swap(f.first,f.second);
answers.insert(f);
continue;
}
f.first--;
varta.insert(f);
varta.insert(f);
sz++;
}
for(set < pi >::iterator it = varta.begin();it != varta.end();it++)
{
pi neo;
neo.first = it->second;
neo.second = it->first;
answers.insert(neo);
}
res.clear();
for(set < pi >::iterator it = answers.begin();it != answers.end();it++)
{
res.push_back(*it);
}
rep(i,0,n)
{
while(cur < k && res[cur].first <= i)
{
cout << res[cur].second << " ";
cur++;
}
cout << orig[i] << " ";
}
cout << endl;
return 0;
}
컴파일 시 표준 에러 (stderr) 메시지
zalmoxis.cpp: In function 'int main()':
zalmoxis.cpp:13:36: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
#define rep(i,a,b) for(int i = a;i < b;i++)
zalmoxis.cpp:73:9:
rep(i,0,res.size())
~~~~~~~~~~~~~~
zalmoxis.cpp:73:5: note: in expansion of macro 'rep'
rep(i,0,res.size())
^~~
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |