Submission #1162154

#TimeUsernameProblemLanguageResultExecution timeMemory
1162154guagua0407Card Collection (JOI24_collection)C++20
11 / 100
16 ms592 KiB
//#pragma GCC optimize("O3")
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define pii pair<int,int>
#define f first
#define s second
#define all(x) x.begin(),x.end()
#define _ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);

int dx[4]={0,0,1,-1};
int dy[4]={1,-1,0,0};

void setIO(string s) {
    freopen((s + ".in").c_str(), "r", stdin);
    freopen((s + ".out").c_str(), "w", stdout);
}

const int mxn=21;
bool dp[mxn][mxn][mxn][mxn];

int main() {_
    int n,m;
    cin>>n>>m;
    vector<int> a(n),b(n);
    vector<int> xs,ys;
    for(int i=0;i<n;i++){
        cin>>a[i]>>b[i];
        xs.push_back(a[i]);
        ys.push_back(b[i]);
    }
    sort(all(xs));
    xs.resize(unique(all(xs))-xs.begin());
    sort(all(ys));
    ys.resize(unique(all(ys))-ys.begin());
    for(int i=0;i<n;i++){
        a[i]=lower_bound(all(xs),a[i])-xs.begin();
        b[i]=lower_bound(all(ys),b[i])-ys.begin();
    }
    for(int i=0;i<n;i++){
        dp[i][i][a[i]][b[i]]=1;
    }
    for(int gap=1;gap<n;gap++){
        for(int i=0;i+gap<n;i++){
            int j=i+gap;
            for(int k=i;k<j;k++){
                for(int x1=0;x1<(int)xs.size();x1++){
                    for(int y1=0;y1<(int)ys.size();y1++){
                        if(!dp[i][k][x1][y1]) continue;
                        for(int x2=0;x2<(int)xs.size();x2++){
                            for(int y2=0;y2<(int)ys.size();y2++){
                                if(!dp[k+1][j][x2][y2]) continue;
                                dp[i][j][min(x1,x2)][min(y1,y2)]=true;
                                dp[i][j][max(x1,x2)][max(y1,y2)]=true;
                            }
                        }
                    }
                }
            }
        }
    }
    for(int i=0;i<m;i++){
        int x,y;
        cin>>x>>y;
        int px=lower_bound(all(xs),x)-xs.begin();
        int py=lower_bound(all(ys),y)-ys.begin();
        if(px>=(int)xs.size() or xs[px]!=x or py>=(int)ys.size() or ys[py]!=y) continue;
        if(dp[0][n-1][px][py]) cout<<i+1<<' ';
    }
    cout<<'\n';
    return 0;
}
//maybe its multiset not set
//yeeorz
//diaoborz

Compilation message (stderr)

Main.cpp: In function 'void setIO(std::string)':
Main.cpp:15:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   15 |     freopen((s + ".in").c_str(), "r", stdin);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:16:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   16 |     freopen((s + ".out").c_str(), "w", stdout);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...