Submission #957814

# Submission time Handle Problem Language Result Execution time Memory
957814 2024-04-04T11:10:10 Z hirayuu_oj Handcrafted Gift (IOI20_gift) C++17
0 / 100
1 ms 348 KB
#include "gift.h"
#include<bits/stdc++.h>
using namespace std;
#define rep(i,n) for(int i=0; i<(n); i++)
#define rep2(i,a,b) for(int i=(a); i<(b); i++)
#define all(x) x.begin(),x.end()
using ll=long long;

char change(char c){
    if(c=='R')return 'B';
    return 'R';
}
int construct(int n, int r, std::vector<int> a, std::vector<int> b, std::vector<int> x) {
    string s(n,'-');
    vector<pair<int,int>> mono;
    rep(i,r){
        if(x[i]==1){
            mono.push_back({a[i],b[i]});
        }
    }
    sort(all(mono));
    int lf=0,ri=-1;
    char fi='R';
    for(auto &[sl,sr]:mono){
        if(sl<=ri){
            ri=sr;
        }
        else{
            rep2(i,lf,ri+1){
                s[i]=fi;
            }
            if((sl-ri)%2==1){
                fi=change(fi);
            }
            lf=sl;
            ri=sr;
        }
    }
    rep2(i,lf,ri+1){
        s[i]=fi;
    }
    char now='R';
    rep(i,n){
        if(s[i]=='-'){
            now=change(now);
            s[i]=now;
        }
        else{
            now=s[i];
        }
    }
    vector<ll> cumr(n+1,0);
    vector<ll> cumb(n+1,0);
    rep(i,n){
        cumr[i+1]=cumr[i];
        cumb[i+1]=cumb[i];
        if(s[i]=='R'){
            cumr[i+1]++;
        }
        else{
            cumb[i+1]++;
        }
    }
    rep(i,r){
        int red=cumr[b[i]+1]-cumr[a[i]];
        int blue=cumb[b[i]+1]-cumr[b[i]+1];
        int col=0;
        if(red)col++;
        if(blue)col++;
        if(x[i]!=col){
            return 0;
        }
    }
    craft(s);
    return 1;
}
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 1 ms 348 KB Output is correct
3 Incorrect 0 ms 348 KB Possible does not match answer file
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 0 ms 344 KB Possible does not match answer file
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Incorrect 0 ms 348 KB Possible does not match answer file
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 1 ms 348 KB Possible does not match answer file
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 1 ms 348 KB Output is correct
3 Incorrect 0 ms 348 KB Possible does not match answer file
4 Halted 0 ms 0 KB -