結果
| 問題 |
No.909 たぴの配置
|
| コンテスト | |
| ユーザー |
Osmium_1008
|
| 提出日時 | 2019-10-18 21:47:52 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 337 ms / 3,000 ms |
| コード長 | 2,943 bytes |
| コンパイル時間 | 2,762 ms |
| コンパイル使用メモリ | 207,436 KB |
| 最終ジャッジ日時 | 2025-01-07 22:47:52 |
|
ジャッジサーバーID (参考情報) |
judge5 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 13 |
ソースコード
#include <bits/stdc++.h>
#define rep(i, n) REP(i, 0, n)
#define REP(i, l, r) for (int i = l; i < r; ++i)
#define int long long
#ifdef DEBUG
#define dout cout
#else
std::stringstream dout;
#endif
using namespace std;
typedef pair<int, int> P;
struct edge {
int to, cost;
};
// other libs
int gcd(int a, int b) {
if (a % b == 0)
return b;
else
return gcd(b, a % b);
}
int lcm(int a, int b) {
return a * b / gcd(a, b);
}
class dijkstra {
private:
int V;
int d[100002];
priority_queue<P, vector<P>, greater<>> que;
public:
dijkstra(int v, int s, vector<edge> G[]) {
V = v;
update(s, G);
}
void update(int s, vector<edge> G[]) {
fill(d, d + V + 1, 100000000000ll);
d[s] = 0;
que.push(make_pair(0, s));
while (!que.empty()) {
P p = que.top();
que.pop();
int v = p.second;
if (d[v] < p.first)
continue;
rep(i, G[v].size()) {
edge e = G[v][i];
if (d[e.to] > d[v] + e.cost) {
d[e.to] = d[v] + e.cost;
que.push(make_pair(d[e.to], e.to));
}
}
}
}
int find(int e) {
return d[e];
}
};
template<typename T>
class Union_Find {
private:
vector<T> t, s;
public:
Union_Find(T max_length) {
rep(i, max_length + 1) {
t.push_back(i);
s.push_back(1);
}
}
void Union(T x, T y) {
if (same(x, y))
return;
T tx = Find(x), ty = Find(y);
if (s[tx] < s[ty]) {
s[ty] += s[tx];
t[tx] = ty;
}
else if (s[tx] > s[ty]) {
s[tx] += s[ty];
t[ty] = tx;
}
else if (tx > ty) {
t[tx] = ty;
s[ty] += s[tx];
}
else {
t[ty] = tx;
s[tx] += s[ty];
}
}
T Find(T n) {
if (t[n] == n)
return n;
else
return t[n] = Find(t[n]);
}
bool same(T x, T y) {
return Find(x) == Find(y);
}
T get_Size(size_t a) {
return s[a];
}
};
bool ifPrime(int n) {
if (n == 1)
return false;
for (int i = 2; i * i <= n; i++) {
if (n % i == 0)
return false;
}
return true;
}
set<int> prime_num_factor(int n){
if(n<2)return set<int>();
set<int> prime;
prime.insert(2);
for(int i=3;i<=n;i++){
for(int it:prime){
if(it*it>i){
prime.insert(i);
break;
}
if(i%it==0)break;
}
}
return prime;
}
vector<int> makeDivisors(int n){
vector<int> re;
REP(i,1,sqrt(n)+1){
if(n%i==0){
re.push_back(i);
if(i!=n/i)re.push_back(n/i);
}
}
return re;
}
int modPow(int a,int n,int mod){
int ret=1;
while(n){
if(n&1)ret=ret*a%mod;
a=a*a%mod;
n>>=1;
}
return ret;
}
signed main(signed argc, char* argv[]) {
cin.tie(nullptr);
ios::sync_with_stdio(false);
int n;
cin>>n;
vector<int> x(n);
rep(i,n)cin>>x[i];
int ans=LLONG_MAX;
rep(i,n){
int in;
cin>>in;
ans=min(ans,in+x[i]);
}
cout<<ans<<endl<<0<<endl;
rep(i,n)cout<<min(x[i],ans)<<endl;
cout<<ans<<endl;
}
Osmium_1008