#include<bits/stdc++.h>
#define pb push_back
#define all(v) v.begin(),v.end()
#define forf(i,s,e) for(int i = s; i<=e; i++)
#define forb(i,s,e) for(int i = s; i>=e; i--)
#define idx(i,v) lower_bound(all(v),i)-v.begin()
#define comp(v) v.erase(unique(all(v)),v.end())
#define sz(v) (int)v.size()
#define fs first
#define se second
#define SP << " " <<
#define LN << "\n"
#define IO cin.tie(0);cout.tie(0);ios_base::sync_with_stdio(false);
using namespace std;
typedef long long ll;
ll inf = 1e18;
int N,M;
bool dp[2001][2001][3][3];
int A[100001], B[100001];
int cmp(int a, int b){
if(a<b) return 0;
if(a==b) return 1;
return 2;
}
int main(){
cin>>N>>M;
forf(i,1,N) cin>>A[i]>>B[i];
forf(q,1,M){
int X,Y; cin>>X>>Y;
forf(s,1,N) forf(e,s,N) forf(i,0,2) forf(j,0,2) dp[s][e][i][j] = false;
forf(l,1,N) forf(s,1,N){
int e= s+l-1; if(e>N) continue;
if(l==1) dp[s][e][cmp(A[s],X)][cmp(B[s],Y)] = true;
else{
forf(k,s,e-1){
forf(si,0,2) forf(sj,0,2) forf(i,0,2) forf(j,0,2){
if(dp[k+1][e][i][j] && dp[s][k][si][sj]) dp[s][e][max(i,si)][max(j,sj)] = true, dp[s][e][min(i,si)][min(j,sj)] = true;
}
}
}
}
if(dp[1][N][1][1]) cout<<q<<"\n";
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |