제출 #155371

#제출 시각아이디문제언어결과실행 시간메모리
155371Charis02Zalmoxis (BOI18_zalmoxis)C++14
40 / 100
1029 ms159280 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...