結果
| 問題 | No.3705 ビバ子とマカロン (Bibako and Macaron) |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2026-09-12 10:15:44 |
| 言語 | C++23(gcc16) (gcc 16.1.0 + boost 1.92.0 + ACL) |
| 結果 |
AC
不安定
|
| 実行時間 | 220 ms / 3,000 ms |
| + 828µs | |
| コード長 | 1,528 bytes |
| 記録 | |
| コンパイル時間 | 3,062 ms |
| コンパイル使用メモリ | 355,656 KB |
| 実行使用メモリ | 9,960 KB |
| 最終ジャッジ日時 | 2026-09-12 10:16:13 |
| 合計ジャッジ時間 | 18,101 ms |
|
ジャッジサーバーID (参考情報) |
judge2_0 / judge3_0 |
(要ログイン)
| サブタスク | 配点 | 結果 |
|---|---|---|
| 小課題1 | 10 % | AC * 5 |
| 小課題2 | 30 % | AC * 8 |
| 小課題3 | 60 % | AC * 15 |
| 合計 | 100 点 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using Graph = vector<vector<int>>;
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n; cin >> n;
vector<int>mac(n);
vector<int>info(n);
for(int i=0; i < n;i++){
int k; cin >> k;
mac[i]=k;
info[k-1]++;
}
vector<int>zero;
vector<int>one;
for(int i=0; i < n;i++){
if(info[i]==0) zero.push_back(i+1);
if(info[i] < 2) one.push_back(i+1);
}
//どうやら1~nの順列ではない?
int t; cin >> t;
for(int i=0; i < t;i++){
//1個または2個があるか…みたいな
//失敗する場合は、”そもそも存在しない”
//または"かぶって2個ない"に分かれる
//まず0があるかlowerboundでやる?
//LについてlowerboundしてitrがRより右でYes
//つぎに、1以下のマカロンの配列を作り、
//min(R,R\)<max(l,l\)のときlowerboundでよさそう
int p,q,r,s; cin >> p >> q >> r >> s;
//p,r,q,sの順の時がおかしくなる
auto x=lower_bound(zero.begin(),zero.end(),p);
auto y=lower_bound(zero.begin(),zero.end(),r);
if(min(q,s) >= max(p,r)){
int a=max(p,r);
int b=min(q,s);
auto z=lower_bound(one.begin(),one.end(),a);
if(z != one.end() and *z <= b) {
cout << "No" << '\n';
continue;
}
}
if(( x != zero.end() and *x <= q) or (y != zero.end() and *y <= s)) cout << "No" << '\n';
else cout << "Yes" << '\n';
}
}