Submission #424283

#TimeUsernameProblemLanguageResultExecution timeMemory
424283flappybirdVision Program (IOI19_vision)C++14
0 / 100
14 ms1768 KiB
#include "vision.h"

#include <bits/stdc++.h>
#include <unordered_map>
#pragma GCC optimize("O3")
#pragma GCC optimize("Ofast")
#pragma GCC optimize("unroll-loops")
#pragma GCC target("avx,avx2,fma")

using namespace std;
typedef int ll;

ll H, W;

unordered_map<ll, vector<ll>> sum, sub;
unordered_map<ll, ll> sum_, sub_;

ll getloc(ll x, ll y) {
	return y * W + x;
}

void construct_network(int H_, int W_, int K) {
	H = H_;
	W = W_;
	ll i, j;
	ll s = 100000000, e = 0;
	for (i = 0; i < H; i++) {
		for (j = 0; j < W; j++) {
			sum[i + j].push_back(getloc(i, j));
			sub[i - j].push_back(getloc(i, j));
			e = max(e, i - j);
			s = min(s, i - j);
		}
	}
	unordered_map<ll, vector<ll>>::iterator it;
	for (it = sum.begin(); it != sum.end(); it++) sum_[it->first] = add_or(it->second);
	for (it = sub.begin(); it != sub.end(); it++) sub_[it->first] = add_or(it->second);
	vector<ll> res;
	for (i = 0; i + K <= W + H - 2; i++) {
		vector<ll> v;
		v.push_back(sum_[i]);
		v.push_back(sum_[i + K]);
		res.push_back(add_and(v));
	}
	for (i = s; i + K <= e; i++) {
		vector<ll> v;
		v.push_back(sub_[i]);
		v.push_back(sub_[i + K]);
		res.push_back(add_and(v));
	}
	add_or(res);
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...