Submission #155366

#TimeUsernameProblemLanguageResultExecution timeMemory
155366Charis02Zalmoxis (BOI18_zalmoxis)C++14
0 / 100
320 ms59752 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 300004 #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; 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.first,cur.second)); } 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(); ll cur = 0; rep(i,0,n) { while(cur < res.size()&&res[cur].first <= i) { cout << res[cur].second << " "; cur++; } cout << orig[i] << " "; } return 0; }

Compilation message (stderr)

zalmoxis.cpp: In function 'int main()':
zalmoxis.cpp:75:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         while(cur < res.size()&&res[cur].first <= i)
               ~~~~^~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...