답안 #100643

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
100643 2019-03-13T04:38:54 Z Pro_ktmr Snowy Roads (JOI16_snowy) C++14
20 / 100
17 ms 1316 KB
#include"bits/stdc++.h"
using namespace std;
#include"Anyalib.h"
#define MP(a,b) make_pair(a,b)

static int n;
static int par[500];
static int toPar[500];
static int type;
void InitAnya(int N, int A[], int B[]){
	type = 0;
	if(N > 100) type = 1;
	n = N;
	vector<pair<int,int> > tonari[500];
	for(int i=0; i<N-1; i++){
		tonari[A[i]].push_back(MP(B[i],i));
		tonari[B[i]].push_back(MP(A[i],i));
	}
	par[0] = 0;
	queue<int> que;
	que.push(0);
	while(!que.empty()){
		int now = que.front();
		que.pop();
		for(int i=0; i<tonari[now].size(); i++){
			if(tonari[now][i].first == par[now]) continue;
			par[tonari[now][i].first] = now;
			toPar[tonari[now][i].first] = tonari[now][i].second;
			que.push(tonari[now][i].first);
		}
	}
}

//void Save(int place, int bit)
static int memo[100];
static int C2[99];
static int wa(int i){
	if(memo[i] != -1) return memo[i];
	return memo[i] = wa(par[i]) + C2[toPar[i]];
}
void Anya(int C[]){
	for(int i=0; i<n-1; i++) C2[i] = C[i];
	if(type == 0){
		for(int i=0; i<n; i++) memo[i] = -1;
		memo[0] = 0;
		for(int i=0; i<n; i++){
			int tmp = wa(i);
			for(int j=0; j<10; j++){
				Save(i*10+j, (tmp>>9-j)%2);
			}
		}
	}
	if(type == 1){
		int tmp = 0;
		int next = 0;
		for(int i=0; i<n; i++){
			if(i%10 == 0){
				for(int j=0; j<10; j++){
					if(next < 0 || next >= 1000) cout << next << endl;
					Save(next, (tmp>>9-j)%2);
					next++;
				}
			}
			if(next < 0 || next >= 1000) cout << next << endl;
			Save(next, C[i]);
			next++;
			tmp += C[i];
		}
	}
}
#include"bits/stdc++.h"
using namespace std;
#include"Borislib.h"
#define MP(a,b) make_pair(a,b)

static int n;
static int par[500];
static int toPar[500];
static int type;
void InitBoris(int N, int A[], int B[]){
	type = 0;
	if(N > 100) type = 1;
	n = N;
	vector<pair<int,int> > tonari[500];
	for(int i=0; i<N-1; i++){
		tonari[A[i]].push_back(MP(B[i],i));
		tonari[B[i]].push_back(MP(A[i],i));
	}
	par[0] = 0;
	queue<int> que;
	que.push(0);
	while(!que.empty()){
		int now = que.front();
		que.pop();
		for(int i=0; i<tonari[now].size(); i++){
			if(tonari[now][i].first == par[now]) continue;
			par[tonari[now][i].first] = now;
			toPar[tonari[now][i].first] = tonari[now][i].second;
			que.push(tonari[now][i].first);
		}
	}
}

//Ask(int place)
int Boris(int city){
	int ans = 0;
	if(type == 0){
		for(int i=0; i<10; i++){
			ans += Ask(city*10+i)<<(9-i);
		}
	}
	if(type == 1){
		int idx = city/10;
		city *= 10;
		idx *= 2;
		for(int i=0; i<10; i++){
			ans += Ask(idx+i)<<(9-i);
		}
		for(int i=0; i<=city%10; i++){
			ans += Ask(idx+10+i);
		}
	}
	return ans;
}

Compilation message

Anya.cpp: In function 'void InitAnya(int, int*, int*)':
Anya.cpp:25:17: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(int i=0; i<tonari[now].size(); i++){
                ~^~~~~~~~~~~~~~~~~~~
Anya.cpp: In function 'void Anya(int*)':
Anya.cpp:49:25: warning: suggest parentheses around '-' inside '>>' [-Wparentheses]
     Save(i*10+j, (tmp>>9-j)%2);
                        ~^~
Anya.cpp:60:24: warning: suggest parentheses around '-' inside '>>' [-Wparentheses]
      Save(next, (tmp>>9-j)%2);
                       ~^~

Boris.cpp: In function 'void InitBoris(int, int*, int*)':
Boris.cpp:25:17: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(int i=0; i<tonari[now].size(); i++){
                ~^~~~~~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 5 ms 1004 KB Output is correct
2 Correct 5 ms 844 KB Output is correct
3 Correct 8 ms 1084 KB Output is correct
4 Correct 8 ms 1112 KB Output is correct
5 Correct 13 ms 1168 KB Output is correct
6 Correct 9 ms 1184 KB Output is correct
7 Correct 10 ms 1188 KB Output is correct
8 Correct 10 ms 1280 KB Output is correct
9 Correct 12 ms 1280 KB Output is correct
10 Correct 13 ms 1304 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 14 ms 1176 KB Output is correct
2 Correct 17 ms 1316 KB Output is correct
3 Correct 16 ms 1280 KB Output is correct
4 Correct 13 ms 1292 KB Output is correct
5 Correct 13 ms 1280 KB Output is correct
6 Correct 14 ms 1180 KB Output is correct
7 Correct 17 ms 1288 KB Output is correct
8 Correct 15 ms 1280 KB Output is correct
9 Correct 13 ms 1316 KB Output is correct
10 Correct 17 ms 1192 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 5 ms 776 KB Wrong Answer [1]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 4 ms 768 KB Wrong Answer [3]
2 Halted 0 ms 0 KB -