답안 #1112425

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1112425 2024-11-14T07:41:03 Z thelegendary08 자동 인형 (IOI18_doll) C++14
9 / 100
1000 ms 10452 KB
#include "doll.h"
#include<bits/stdc++.h>
#define vi vector<int>
#define pb push_back
#define vvi vector<vector<int>>
#define f0r(i,n) for(int i = 0; i<n; i++)
#define vout(v) for(auto u : v)cout<<u<<' '; cout<<'\n';
using namespace std;
void create_circuit(int M, std::vector<int> A) {
	vi v;
	v.pb(0);
	for(auto u : A)v.pb(u);
	v.pb(0);
	if(M == 1){
		int n = v.size() - 2;
		int mx = ceil(log2(n));
		int bts = (1 << mx) - n;
		int num = -1;
		vi x; 
		vi y;
		vi c(M + 1);
		c[0] = 1;
		c[1] = -1;
		f0r(i, mx){
			f0r(j, (1 << i)){
				if(i != mx - 1){
					x.pb(num * 2);
					y.pb(num * 2 - 1);
				}
				else{
					x.pb(1);
					y.pb(1);
				}
				
				num--;
			}
		}
		//cout<<bts<<'\n';
		for(int i = (1 << (mx - 1)); i < (1 << mx) - 1; i++){
			if(bts >= 2){
				x[i - 1] = -1;
				y[i-1] = -1;
				bts -= 2;
			}
			else if(bts == 1){
				x[i-1] = -1;
				bts--;
			}
		}
		y[y.size() - 1] = 0;
		//vout(c);
		//vout(x);
		//vout(y);
		answer(c,x,y);
	}
	else{
		vvi nxt(M+1);
		f0r(i, v.size() - 1){
	     		nxt[v[i]].pb(v[i+1]);
		}        
		int num = -1;
		vi c(M+1);
		vi x;
		vi y;
		f0r(i, M+1){
			if(nxt[i].size() == 1){
				c[i] = nxt[i][0];
			}
			else if(nxt[i].size() == 2){
				c[i] = num;
				x.pb(nxt[i][0]);
				y.pb(nxt[i][1]);
				num--;
			}
			else if(nxt[i].size() == 3){
				c[i] = num;
				x.pb(num-1);
				y.pb(num - 2);
				num--;
				x.pb(nxt[i][0]);
				y.pb(nxt[i][1]);
				num--;
				x.pb(c[i]);
				y.pb(nxt[i][2]);
				num--;
			}
			else if(nxt[i].size() == 4){
				c[i] = num;
				x.pb(num-1);
				y.pb(num - 2);
				num--;
				x.pb(nxt[i][0]);
				y.pb(nxt[i][2]);
				num--;
				x.pb(nxt[i][1]);
				y.pb(nxt[i][3]);
				num--;
			}
		}
		
		answer(c,x,y);	
	}
	
}

Compilation message

doll.cpp: In function 'void create_circuit(int, std::vector<int>)':
doll.cpp:6:34: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    6 | #define f0r(i,n) for(int i = 0; i<n; i++)
......
   58 |   f0r(i, v.size() - 1){
      |       ~~~~~~~~~~~~~~~             
doll.cpp:58:3: note: in expansion of macro 'f0r'
   58 |   f0r(i, v.size() - 1){
      |   ^~~
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 336 KB Output is correct
2 Correct 20 ms 7112 KB Output is correct
3 Correct 17 ms 5980 KB Output is correct
4 Correct 1 ms 592 KB Output is correct
5 Correct 7 ms 3920 KB Output is correct
6 Correct 26 ms 8904 KB Output is correct
7 Execution timed out 1056 ms 336 KB Time limit exceeded
8 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 336 KB Output is correct
2 Correct 20 ms 7112 KB Output is correct
3 Correct 17 ms 5980 KB Output is correct
4 Correct 1 ms 592 KB Output is correct
5 Correct 7 ms 3920 KB Output is correct
6 Correct 26 ms 8904 KB Output is correct
7 Execution timed out 1056 ms 336 KB Time limit exceeded
8 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 336 KB Output is correct
2 Correct 20 ms 7112 KB Output is correct
3 Correct 17 ms 5980 KB Output is correct
4 Correct 1 ms 592 KB Output is correct
5 Correct 7 ms 3920 KB Output is correct
6 Correct 26 ms 8904 KB Output is correct
7 Execution timed out 1056 ms 336 KB Time limit exceeded
8 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 336 KB wrong motion
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Partially correct 1 ms 336 KB Output is partially correct
2 Correct 26 ms 6304 KB Output is correct
3 Partially correct 49 ms 9192 KB Output is partially correct
4 Partially correct 46 ms 10452 KB Output is partially correct
# 결과 실행 시간 메모리 Grader output
1 Partially correct 1 ms 336 KB Output is partially correct
2 Correct 26 ms 6304 KB Output is correct
3 Partially correct 49 ms 9192 KB Output is partially correct
4 Partially correct 46 ms 10452 KB Output is partially correct
5 Incorrect 31 ms 7708 KB wrong motion
6 Halted 0 ms 0 KB -