QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#427436 | #8780. Training, Round 2 | ucup-team112# | WA | 263ms | 102356kb | C++20 | 12.4kb | 2024-06-01 13:18:35 | 2024-06-01 13:18:35 |
Judging History
answer
//#define _GLIBCXX_DEBUG
//#pragma GCC target("avx2")
//#pragma GCC optimize("O3")
//#pragma GCC optimize("unroll-loops")
#include<bits/stdc++.h>
using namespace std;
#ifdef LOCAL
#include <debug_print.hpp>
#define OUT(...) debug_print::multi_print(#__VA_ARGS__, __VA_ARGS__)
#else
#define OUT(...) (static_cast<void>(0))
#endif
#define endl '\n'
#define lfs cout<<fixed<<setprecision(15)
#define ALL(a) (a).begin(),(a).end()
#define ALLR(a) (a).rbegin(),(a).rend()
#define UNIQUE(a) (a).erase(unique((a).begin(),(a).end()),(a).end())
#define spa << " " <<
#define fi first
#define se second
#define MP make_pair
#define MT make_tuple
#define PB push_back
#define EB emplace_back
#define rep(i,n,m) for(ll i = (n); i < (ll)(m); i++)
#define rrep(i,n,m) for(ll i = (ll)(m) - 1; i >= (ll)(n); i--)
namespace template_tute{
using ll = long long;
using ld = long double;
const ll MOD1 = 1e9+7;
const ll MOD9 = 998244353;
const ll INF = 1e18;
using P = pair<ll, ll>;
template<typename T> using PQ = priority_queue<T>;
template<typename T> using QP = priority_queue<T,vector<T>,greater<T>>;
template<typename T1, typename T2>bool chmin(T1 &a,T2 b){if(a>b){a=b;return true;}else return false;}
template<typename T1, typename T2>bool chmax(T1 &a,T2 b){if(a<b){a=b;return true;}else return false;}
ll median(ll a,ll b, ll c){return a+b+c-max<ll>({a,b,c})-min<ll>({a,b,c});}
void ans1(bool x){if(x) cout<<"Yes"<<endl;else cout<<"No"<<endl;}
void ans2(bool x){if(x) cout<<"YES"<<endl;else cout<<"NO"<<endl;}
void ans3(bool x){if(x) cout<<"Yay!"<<endl;else cout<<":("<<endl;}
template<typename T1,typename T2>void ans(bool x,T1 y,T2 z){if(x)cout<<y<<endl;else cout<<z<<endl;}
template<typename T1,typename T2,typename T3>void anss(T1 x,T2 y,T3 z){ans(x!=y,x,z);};
template<typename T>void debug(const T &v,ll h,ll w,string sv=" "){for(ll i=0;i<h;i++){cout<<v[i][0];for(ll j=1;j<w;j++)cout<<sv<<v[i][j];cout<<endl;}};
template<typename T>void debug(const T &v,ll n,string sv=" "){if(n!=0)cout<<v[0];for(ll i=1;i<n;i++)cout<<sv<<v[i];cout<<endl;};
template<typename T>void debug(const vector<T>&v){debug(v,v.size());}
template<typename T>void debug(const vector<vector<T>>&v){for(auto &vv:v)debug(vv,vv.size());}
template<typename T>void debug(stack<T> st){while(!st.empty()){cout<<st.top()<<" ";st.pop();}cout<<endl;}
template<typename T>void debug(queue<T> st){while(!st.empty()){cout<<st.front()<<" ";st.pop();}cout<<endl;}
template<typename T>void debug(deque<T> st){while(!st.empty()){cout<<st.front()<<" ";st.pop_front();}cout<<endl;}
template<typename T>void debug(PQ<T> st){while(!st.empty()){cout<<st.top()<<" ";st.pop();}cout<<endl;}
template<typename T>void debug(QP<T> st){while(!st.empty()){cout<<st.top()<<" ";st.pop();}cout<<endl;}
template<typename T>void debug(const set<T>&v){for(auto z:v)cout<<z<<" ";cout<<endl;}
template<typename T>void debug(const multiset<T>&v){for(auto z:v)cout<<z<<" ";cout<<endl;}
template<typename T,size_t size>void debug(const array<T, size> &a){for(auto z:a)cout<<z<<" ";cout<<endl;}
template<typename T,typename V>void debug(const map<T,V>&v){for(auto z:v)cout<<"["<<z.first<<"]="<<z.second<<",";cout<<endl;}
template<typename T>vector<vector<T>>vec(ll x, ll y, T w){vector<vector<T>>v(x,vector<T>(y,w));return v;}
vector<ll>dx={1,-1,0,0,1,1,-1,-1};vector<ll>dy={0,0,1,-1,1,-1,1,-1};
template<typename T>vector<T> make_v(size_t a,T b){return vector<T>(a,b);}
template<typename... Ts>auto make_v(size_t a,Ts... ts){return vector<decltype(make_v(ts...))>(a,make_v(ts...));}
template<typename T1, typename T2>ostream &operator<<(ostream &os, const pair<T1, T2>&p){return os << "(" << p.first << "," << p.second << ")";}
template<typename T>ostream &operator<<(ostream &os, const vector<T> &v){os<<"[";for(auto &z:v)os << z << ",";os<<"]"; return os;}
template<typename T>void rearrange(vector<int>&ord, vector<T>&v){
auto tmp = v;
for(int i=0;i<tmp.size();i++)v[i] = tmp[ord[i]];
}
template<typename Head, typename... Tail>void rearrange(vector<int>&ord,Head&& head, Tail&&... tail){
rearrange(ord, head);
rearrange(ord, tail...);
}
template<typename T> vector<int> ascend(const vector<T>&v){
vector<int>ord(v.size());iota(ord.begin(),ord.end(),0);
sort(ord.begin(),ord.end(),[&](int i,int j){return make_pair(v[i],i)<make_pair(v[j],j);});
return ord;
}
template<typename T> vector<int> descend(const vector<T>&v){
vector<int>ord(v.size());iota(ord.begin(),ord.end(),0);
sort(ord.begin(),ord.end(),[&](int i,int j){return make_pair(v[i],-i)>make_pair(v[j],-j);});
return ord;
}
template<typename T> vector<T> inv_perm(const vector<T>&ord){
vector<T>inv(ord.size());
for(int i=0;i<ord.size();i++)inv[ord[i]] = i;
return inv;
}
ll FLOOR(ll n,ll div){assert(div>0);return n>=0?n/div:(n-div+1)/div;}
ll CEIL(ll n,ll div){assert(div>0);return n>=0?(n+div-1)/div:n/div;}
ll digitsum(ll n){ll ret=0;while(n){ret+=n%10;n/=10;}return ret;}
ll modulo(ll n,ll d){return (n%d+d)%d;};
template<typename T>T min(const vector<T>&v){return *min_element(v.begin(),v.end());}
template<typename T>T max(const vector<T>&v){return *max_element(v.begin(),v.end());}
template<typename T>T acc(const vector<T>&v){return accumulate(v.begin(),v.end(),T(0));};
template<typename T>T reverse(const T &v){return T(v.rbegin(),v.rend());};
//mt19937 mt(chrono::steady_clock::now().time_since_epoch().count());
int popcount(ll x){return __builtin_popcountll(x);};
int poplow(ll x){return __builtin_ctzll(x);};
int pophigh(ll x){return 63 - __builtin_clzll(x);};
template<typename T>T poll(queue<T> &q){auto ret=q.front();q.pop();return ret;};
template<typename T>T poll(priority_queue<T> &q){auto ret=q.top();q.pop();return ret;};
template<typename T>T poll(QP<T> &q){auto ret=q.top();q.pop();return ret;};
template<typename T>T poll(stack<T> &s){auto ret=s.top();s.pop();return ret;};
ll MULT(ll x,ll y){if(LLONG_MAX/x<=y)return LLONG_MAX;return x*y;}
ll POW2(ll x, ll k){ll ret=1,mul=x;while(k){if(mul==LLONG_MAX)return LLONG_MAX;if(k&1)ret=MULT(ret,mul);mul=MULT(mul,mul);k>>=1;}return ret;}
ll POW(ll x, ll k){ll ret=1;for(int i=0;i<k;i++){if(LLONG_MAX/x<=ret)return LLONG_MAX;ret*=x;}return ret;}
std::ostream &operator<<(std::ostream &dest, __int128_t value) {
std::ostream::sentry s(dest);
if (s) {
__uint128_t tmp = value < 0 ? -value : value;
char buffer[128];
char *d = std::end(buffer);
do {
--d;
*d = "0123456789"[tmp % 10];
tmp /= 10;
} while (tmp != 0);
if (value < 0) {
--d;
*d = '-';
}
int len = std::end(buffer) - d;
if (dest.rdbuf()->sputn(d, len) != len) {
dest.setstate(std::ios_base::badbit);
}
}
return dest;
}
namespace converter{
int dict[500];
const string lower="abcdefghijklmnopqrstuvwxyz";
const string upper="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
const string digit="0123456789";
const string digit1="123456789";
void regi_str(const string &t){
for(int i=0;i<t.size();i++){
dict[t[i]]=i;
}
}
void regi_int(const string &t){
for(int i=0;i<t.size();i++){
dict[i]=t[i];
}
}
vector<int>to_int(const string &s,const string &t){
regi_str(t);
vector<int>ret(s.size());
for(int i=0;i<s.size();i++){
ret[i]=dict[s[i]];
}
return ret;
}
vector<int>to_int(const string &s){
auto t=s;
sort(t.begin(),t.end());
t.erase(unique(t.begin(),t.end()),t.end());
return to_int(s,t);
}
vector<vector<int>>to_int(const vector<string>&s,const string &t){
regi_str(t);
vector<vector<int>>ret(s.size(),vector<int>(s[0].size()));
for(int i=0;i<s.size();i++){
for(int j=0;j<s[0].size();j++){
ret[i][j]=dict[s[i][j]];
}
}
return ret;
}
vector<vector<int>>to_int(const vector<string>&s){
string t;
for(int i=0;i<s.size();i++){
t+=s[i];
}
sort(t.begin(),t.end());t.erase(unique(t.begin(),t.end()),t.end());
return to_int(s,t);
}
string to_str(const vector<int>&s,const string &t){
regi_int(t);
string ret;
for(auto z:s)ret+=dict[z];
return ret;
}
vector<string> to_str(const vector<vector<int>>&s,const string &t){
regi_int(t);
vector<string>ret(s.size());
for(int i=0;i<s.size();i++){
for(auto z:s[i])ret[i]+=dict[z];
}
return ret;
}
}
template< typename T = int >
struct edge {
int to;
T cost;
int id;
edge():to(-1),id(-1){};
edge(int to, T cost = 1, int id = -1):to(to), cost(cost), id(id){}
operator int() const { return to; }
};
template<typename T>
using Graph = vector<vector<edge<T>>>;
template<typename T>
Graph<T>revgraph(const Graph<T> &g){
Graph<T>ret(g.size());
for(int i=0;i<g.size();i++){
for(auto e:g[i]){
int to = e.to;
e.to = i;
ret[to].push_back(e);
}
}
return ret;
}
template<typename T>
Graph<T> readGraph(int n,int m,int indexed=1,bool directed=false,bool weighted=false){
Graph<T> ret(n);
for(int es = 0; es < m; es++){
int u,v;
T w=1;
cin>>u>>v;u-=indexed,v-=indexed;
if(weighted)cin>>w;
ret[u].emplace_back(v,w,es);
if(!directed)ret[v].emplace_back(u,w,es);
}
return ret;
}
template<typename T>
Graph<T> readParent(int n,int indexed=1,bool directed=true){
Graph<T>ret(n);
for(int i=1;i<n;i++){
int p;cin>>p;
p-=indexed;
ret[p].emplace_back(i);
if(!directed)ret[i].emplace_back(p);
}
return ret;
}
}
using namespace template_tute;
struct FastSet{
using ull = unsigned long long;
static constexpr unsigned int B = 64;
int n,lg;
vector<vector<ull>> seg;
FastSet(int _n) : n(_n){
do{
seg.push_back(vector<ull>((_n + B - 1) / B));
_n = (_n + B - 1) / B;
} while (_n > 1);
lg = seg.size();
}
bool operator[](int i) const {
return (seg[0][i / B] >> (i % B) & 1) != 0;
}
void set(int i)
{
for(int h = 0; h < lg; h++){
seg[h][i / B] |= 1ULL << (i % B);
i /= B;
}
}
void reset(int i)
{
for(int h = 0; h < lg; h++){
seg[h][i / B] &= ~(1ULL << (i % B));
if (seg[h][i / B])
break;
i /= B;
}
}
// x以上最小の要素
int next(int i){
for(int h = 0;h < lg; h++){
if (i / B == seg[h].size())
break;
ull d = seg[h][i / B] >> (i % B);
if (!d){
i = i / B + 1;
continue;
}
// find
i += __builtin_ctzll(d);
for (int g = h - 1;g >= 0;g--){
i *= B;
i += __builtin_ctzll(seg[g][i / B]);
}
return i;
}
return n;
}
// x未満最大の要素
int prev(int i){
i--;
for (int h = 0;h < lg; h++){
if (i == -1)
break;
ull d = seg[h][i / B] << (63 - i % 64);
if (!d){
i = i / B -1;
continue;
}
// find
i += (63 - __builtin_clzll(d)) - (B - 1);
for(int g = h - 1;g >= 0;g--){
i *= B;
i += (63 - __builtin_clzll(seg[g][i / B]));
}
return i;
}
return -1;
}
};
void solve(){
ll res=0,buf=0;
bool judge = true;
int n,x,y;cin>>n>>x>>y;
vector<int>lx(n),rx(n),ly(n),ry(n);
rep(i,0,n){
cin>>lx[i]>>rx[i]>>ly[i]>>ry[i];
lx[i]-=x;
rx[i]-=x;
ly[i]-=y;
ry[i]-=y;
}
auto dp=vec(n+1,n+1,n+1);
dp[0][0]=0;
vector<vector<int>>gl(n),gr(n);
rep(i,0,n){
if(ly[i]<n){
gl[max(0,ly[i])].PB(i);
gr[clamp(ry[i],0,n-1)].PB(i);
}
}
FastSet fs(n+2);
fs.set(n);
rep(i,0,n)rep(j,0,n){
for(auto z:gl[j]){
if(lx[z]<=i&&i<=rx[z]){
fs.set(z);
}
}
int nxt=fs.next(dp[i][j])+1;
chmin(dp[i+1][j],nxt);
chmin(dp[i][j+1],nxt);
for(auto z:gr[j]){
if(lx[z]<=i&&i<=rx[z]){
fs.reset(z);
}
}
}
ll ret=0;
rep(i,0,n+1)rep(j,0,n+1){
if(dp[i][j]<=n){
chmax(ret,i+j);
}
}
cout<<ret<<endl;
}
int main(){
cin.tie(nullptr);
ios_base::sync_with_stdio(false);
ll res=0,buf=0;
bool judge = true;
int T = 1;
//cin>>T;
while(T--){
solve();
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 1ms
memory: 3580kb
input:
3 0 0 0 1 0 1 1 1 0 1 1 1 1 1
output:
3
result:
ok single line: '3'
Test #2:
score: 0
Accepted
time: 263ms
memory: 101992kb
input:
5000 801577551 932138594 801577551 801577551 932138594 932138594 801577552 801577552 932138594 932138594 801577552 801577552 932138595 932138595 801577552 801577552 932138596 932138596 801577553 801577553 932138596 932138596 801577553 801577553 932138597 932138597 801577553 801577553 932138598 93213...
output:
5000
result:
ok single line: '5000'
Test #3:
score: 0
Accepted
time: 262ms
memory: 101944kb
input:
5000 932138594 801577551 932138594 932138594 801577551 801577551 932138594 932138594 801577552 801577552 932138595 932138595 801577552 801577552 932138596 932138596 801577552 801577552 932138596 932138596 801577553 801577553 932138597 932138597 801577553 801577553 932138598 932138598 801577553 80157...
output:
5000
result:
ok single line: '5000'
Test #4:
score: 0
Accepted
time: 235ms
memory: 102356kb
input:
5000 76836128 716580777 76836128 76836128 716580777 716580777 76836129 76836129 716580777 716580777 76836130 76836130 716580777 716580777 76836131 76836131 716580777 716580777 76836131 76836131 716580778 716580778 76836131 76836131 716580779 716580779 76836131 76836131 716580780 716580780 76836128 7...
output:
4994
result:
ok single line: '4994'
Test #5:
score: 0
Accepted
time: 192ms
memory: 101548kb
input:
5000 716580777 76836128 716580777 716580777 76836128 76836128 716580777 716580777 76836129 76836129 716580777 716580777 76836130 76836130 716580777 716580777 76836131 76836131 716580778 716580778 76836131 76836131 716580779 716580779 76836131 76836131 716580780 716580780 76836131 76836131 716580778 ...
output:
4994
result:
ok single line: '4994'
Test #6:
score: 0
Accepted
time: 215ms
memory: 101536kb
input:
5000 774827789 700294316 774827790 774827791 700294315 700294317 774827789 774827790 700294317 700294318 774827789 774827790 700294316 700294316 774827787 774827787 700294315 700294316 774827789 774827791 700294315 700294318 774827787 774827789 700294317 700294318 774827787 774827788 700294314 70029...
output:
5
result:
ok single line: '5'
Test #7:
score: 0
Accepted
time: 214ms
memory: 101700kb
input:
5000 700294316 774827789 700294315 700294317 774827790 774827791 700294317 700294318 774827789 774827790 700294316 700294316 774827789 774827790 700294315 700294316 774827787 774827787 700294315 700294318 774827789 774827791 700294317 700294318 774827787 774827789 700294314 700294318 774827787 77482...
output:
5
result:
ok single line: '5'
Test #8:
score: 0
Accepted
time: 203ms
memory: 101560kb
input:
5000 256309650 340081224 256309647 256309649 340081224 340081227 256309645 256309650 340081226 340081229 256309652 256309652 340081219 340081220 256309645 256309655 340081222 340081226 256309646 256309648 340081221 340081225 256309651 256309654 340081219 340081221 256309651 256309653 340081219 34008...
output:
11
result:
ok single line: '11'
Test #9:
score: 0
Accepted
time: 199ms
memory: 101704kb
input:
5000 340081224 256309650 340081224 340081227 256309647 256309649 340081226 340081229 256309645 256309650 340081219 340081220 256309652 256309652 340081222 340081226 256309645 256309655 340081221 340081225 256309646 256309648 340081219 340081221 256309651 256309654 340081219 340081226 256309651 25630...
output:
11
result:
ok single line: '11'
Test #10:
score: 0
Accepted
time: 192ms
memory: 101868kb
input:
5000 490966735 218892297 490966732 490966733 218892303 218892305 490966741 490966741 218892298 218892301 490966733 490966735 218892291 218892297 490966729 490966734 218892296 218892301 490966742 490966745 218892287 218892303 490966726 490966738 218892301 218892305 490966726 490966730 218892292 21889...
output:
21
result:
ok single line: '21'
Test #11:
score: 0
Accepted
time: 188ms
memory: 101884kb
input:
5000 218892297 490966735 218892303 218892305 490966732 490966733 218892298 218892301 490966741 490966741 218892291 218892297 490966733 490966735 218892296 218892301 490966729 490966734 218892287 218892303 490966742 490966745 218892301 218892305 490966726 490966738 218892292 218892300 490966726 49096...
output:
21
result:
ok single line: '21'
Test #12:
score: 0
Accepted
time: 211ms
memory: 101876kb
input:
5000 619930859 159808007 619930853 619930854 159808007 159808017 619930840 619930856 159808013 159808025 619930848 619930864 159807995 159808009 619930844 619930847 159808008 159808022 619930848 619930856 159807995 159808001 619930850 619930852 159808020 159808022 619930853 619930871 159807992 15980...
output:
41
result:
ok single line: '41'
Test #13:
score: 0
Accepted
time: 207ms
memory: 101908kb
input:
5000 159808007 619930859 159808007 159808017 619930853 619930854 159808013 159808025 619930840 619930856 159807995 159808009 619930848 619930864 159808008 159808022 619930844 619930847 159807995 159808001 619930848 619930856 159808020 159808022 619930850 619930852 159807992 159808024 619930853 61993...
output:
41
result:
ok single line: '41'
Test #14:
score: 0
Accepted
time: 197ms
memory: 101908kb
input:
5000 974187020 583788009 974186973 974187017 583788001 583788028 974187035 974187052 583788011 583788027 974187016 974187037 583787973 583787981 974187036 974187046 583788012 583788028 974187046 974187066 583788042 583788056 974186994 974187016 583788013 583788044 974186986 974186989 583787969 58378...
output:
100
result:
ok single line: '100'
Test #15:
score: 0
Accepted
time: 205ms
memory: 101904kb
input:
5000 583788009 974187020 583788001 583788028 974186973 974187017 583788011 583788027 974187035 974187052 583787973 583787981 974187016 974187037 583788012 583788028 974187036 974187046 583788042 583788056 974187046 974187066 583788013 583788044 974186994 974187016 583787969 583787994 974186986 97418...
output:
100
result:
ok single line: '100'
Test #16:
score: 0
Accepted
time: 193ms
memory: 101944kb
input:
5000 684153868 455686026 684153781 684153927 455685991 455686049 684153899 684153921 455686036 455686037 684153784 684153959 455685984 455686049 684153967 684153968 455685927 455686014 684153795 684153963 455685926 455686026 684153787 684153846 455686084 455686105 684153817 684153870 455685928 45568...
output:
195
result:
ok single line: '195'
Test #17:
score: 0
Accepted
time: 210ms
memory: 102072kb
input:
5000 455686026 684153868 455685991 455686049 684153781 684153927 455686036 455686037 684153899 684153921 455685984 455686049 684153784 684153959 455685927 455686014 684153967 684153968 455685926 455686026 684153795 684153963 455686084 455686105 684153787 684153846 455685928 455686002 684153817 68415...
output:
195
result:
ok single line: '195'
Test #18:
score: -100
Wrong Answer
time: 203ms
memory: 101796kb
input:
5000 999613320 323981653 999613235 999613461 323981523 323981741 999613292 999613510 323981543 323981775 999613390 999613409 323981669 323981831 999613416 999613497 323981638 323981846 999613234 999613269 323981627 323981669 999613414 999613489 323981453 323981526 999613174 999613358 323981489 32398...
output:
367
result:
wrong answer 1st lines differ - expected: '366', found: '367'