답안 #63026

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
63026 2018-07-31T10:44:43 Z hamzqq9 Zalmoxis (BOI18_zalmoxis) C++14
100 / 100
334 ms 14812 KB
#include<bits/stdc++.h>
#define st first
#define nd second
#define pb push_back
#define ppb pop_back
#define umax(x,y) x=max(x,y)
#define umin(x,y) x=min(x,y)
#define ll long long
#define ii pair<int,int>
#define iii pair<ii,int>
#define sz(x) (x.size())
#define orta ((bas+son)>>1)
#define all(x) x.begin(),x.end()
#define dbgs(x) cerr<<(#x)<<" --> "<<(x)<<" "
#define dbg(x) cerr<<(#x)<<" --> "<<(x)<<endl;getchar()
#define pw(x) (1<<(x))
#define inf 2000500000
#define MOD 1000000007
#define N 305
#define LOG 20
using namespace std;

int n,k,x;
stack<int> s;
vector<int> ans,cev,seq;
int rem;

void solve(int x) {

	if(x==0 || rem==0) {

		cev.pb(x);

		return ;	
	
	}

	rem--;

	solve(x-1);
	solve(x-1);

}

int main() {

//	freopen("input.txt","r",stdin);

	scanf("%d %d",&n,&k);

	for(int i=1;i<=n+1;i++) {

		if(i==n+1 && sz(ans)==n+k) break ;

		if(i!=n+1) {scanf("%d",&x);seq.pb(x);}
		else x=inf;

		while((i!=n+1)?(sz(s) && s.top()<x):(sz(s)>1)) {

			int val=s.top();

			ans.pb(val);

			while(sz(s) && s.top()==val) {

				s.pop();

				val++;

			}

			s.push(val);

		}

		if(i!=n+1) {

			int tut=x;

			while(sz(s) && s.top()==tut) {

				s.pop();

				tut++;

			}

			s.push(tut);

			ans.pb(x);

		}

	}

	int val=s.top();

	while(val<30) {

		ans.pb(val);
		val++;

	}

	rem=n+k-sz(ans);

	int cur=0;

	for(int i=0;i<sz(ans);i++) {

		if(cur<sz(seq) && seq[cur]==ans[i]) {

			cev.pb(ans[i]);

			cur++;

		}
		else {

			solve(ans[i]);

		}

	}

	for(auto x:cev) printf("%d ",x);

}

Compilation message

zalmoxis.cpp: In function 'int main()':
zalmoxis.cpp:53:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   if(i==n+1 && sz(ans)==n+k) break ;
                       ^
zalmoxis.cpp:109:15: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int i=0;i<sz(ans);i++) {
               ^
zalmoxis.cpp:111:9: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   if(cur<sz(seq) && seq[cur]==ans[i]) {
         ^
zalmoxis.cpp:49:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d %d",&n,&k);
  ~~~~~^~~~~~~~~~~~~~~
zalmoxis.cpp:55:20: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   if(i!=n+1) {scanf("%d",&x);seq.pb(x);}
               ~~~~~^~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 261 ms 14288 KB Output is correct
2 Correct 304 ms 14332 KB Output is correct
3 Correct 263 ms 14672 KB Output is correct
4 Correct 226 ms 14672 KB Output is correct
5 Correct 233 ms 14672 KB Output is correct
6 Correct 252 ms 14672 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 215 ms 14672 KB Output is correct
2 Correct 271 ms 14700 KB Output is correct
3 Correct 278 ms 14700 KB Output is correct
4 Correct 334 ms 14700 KB Output is correct
5 Correct 260 ms 14764 KB Output is correct
6 Correct 285 ms 14812 KB Output is correct
7 Correct 250 ms 14812 KB Output is correct
8 Correct 313 ms 14812 KB Output is correct
9 Correct 245 ms 14812 KB Output is correct
10 Correct 171 ms 14812 KB Output is correct
11 Correct 191 ms 14812 KB Output is correct
12 Correct 147 ms 14812 KB Output is correct
13 Correct 181 ms 14812 KB Output is correct
14 Correct 133 ms 14812 KB Output is correct