結果

問題 No.3705 ビバ子とマカロン (Bibako and Macaron)
コンテスト
ユーザー rexip
提出日時 2026-09-12 10:15:44
言語 C++23(gcc16)
(gcc 16.1.0 + boost 1.92.0 + ACL)
コンパイル:
g++-16 -O2 -lm -std=c++23 -Wuninitialized -DONLINE_JUDGE -o a.out _filename_
実行:
./a.out
結果
AC  
実行時間 220 ms / 3,000 ms
+ 828µs
コード長 1,528 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 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 点
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

#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';

   }
}

0