Submission #683912

# Submission time Handle Problem Language Result Execution time Memory
683912 2023-01-19T15:55:43 Z victor_gao Furniture (JOI20_furniture) C++17
5 / 100
5000 ms 23960 KB
#pragma GCC optimize("Ofast,unroll-loops,O3")
#pragma GCC optimize("avx,avx2,sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,fma,tune=native")
#include<bits/stdc++.h>
//#include<bits/extc++.h>
//#pragma pack(1)
#define fast ios::sync_with_stdio(0); cin.tie(0);
#define pii pair<int,int>
#define x first
#define y second
#define N 1015
using namespace std;
//using namespace __gnu_pbds;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
//typedef tree<int, null_type,less_equal<int>, rb_tree_tag,tree_order_statistics_node_update> order_multiset;
//typedef tree<int, null_type,less<int>, rb_tree_tag,tree_order_statistics_node_update> order_set;
int g[2*N];
int n,m,arr[N][N],in[N][N],out[N][N];
bool vis[N][N];
bool check(int x,int y){
    arr[x][y]=1;
    if (vis[x][y]) return 1;
    bool ok=1;
    vector<pii>path,path2;
    queue<pii>q;
    q.push({x,y});
    vis[x][y]=1;
    g[x+y]--;
    path.push_back({x,y});
    if (!g[x+y]) ok=0;
    while (!q.empty()&&ok){
        pii np=q.front(); q.pop();
        path2.push_back(np);
        if (np.x+1<=n&&!vis[np.x+1][np.y]){
            in[np.x+1][np.y]--;
            if (!in[np.x+1][np.y]){
                q.push({np.x+1,np.y});
                vis[np.x+1][np.y]=1;
                g[np.x+np.y+1]--;
                path.push_back({np.x+1,np.y});
            }
        }
        if (np.y+1<=m&&!vis[np.x][np.y+1]){
            in[np.x][np.y+1]--;
            if (!in[np.x][np.y+1]){
                q.push({np.x,np.y+1});
                vis[np.x][np.y+1]=1;
                g[np.x+np.y+1]--;
                path.push_back({np.x,np.y+1});
            }
        }
        if (g[np.x+np.y+1]==0) ok=0;
    }
    if (ok) return ok;
    else {
        arr[x][y]=0;
        for (auto i:path){
            vis[i.x][i.y]=0;
            g[i.x+i.y]++;
        }
        for (auto [i,j]:path2){
            if (j+1<=m&&arr[i][j+1]==0&&!vis[i][j+1])
                in[i][j+1]++;
            if (i+1<=n&&arr[i+1][j]==0&&!vis[i+1][j])
                in[i+1][j]++;
        }
        return 0;
    }
}
signed main(){
    fast
    cin>>n>>m;
    for (int i=1;i<=n;i++){
        for (int j=1;j<=m;j++){
            cin>>arr[i][j];
            g[i+j]++;
        }
    }
    for (int i=1;i<=n;i++){
        for (int j=1;j<=m;j++){
            if (j+1<=m)
                in[i][j+1]++;
            if (i+1<=n)
                in[i+1][j]++;
        }
    }
    for (int i=1;i<=n;i++){
        for (int j=1;j<=m;j++){
            if (arr[i][j])
                check(i,j);
        }
    }
    int q; cin>>q;
    while (q--){
        int x,y; cin>>x>>y;
        /*
        for (int i=1;i<=n;i++){
            for (int j=1;j<=m;j++){
                cout<<vis[i][j];
            }
            cout<<'\n';
        }
        cout<<'\n';
        for (int i=1;i<=n;i++){
            for (int j=1;j<=m;j++){
                cout<<in[i][j]<<" ";
            }
            cout<<'\n';
        }
        cout<<'\n';
        */
        int ans=check(x,y);
        cout<<ans<<'\n';
    }
}

Compilation message

furniture.cpp:2:88: warning: bad option '-favx' to pragma 'optimize' [-Wpragmas]
    2 | #pragma GCC optimize("avx,avx2,sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,fma,tune=native")
      |                                                                                        ^
furniture.cpp:2:88: warning: bad option '-favx2' to pragma 'optimize' [-Wpragmas]
furniture.cpp:2:88: warning: bad option '-fsse' to pragma 'optimize' [-Wpragmas]
furniture.cpp:2:88: warning: bad option '-fsse2' to pragma 'optimize' [-Wpragmas]
furniture.cpp:2:88: warning: bad option '-fsse3' to pragma 'optimize' [-Wpragmas]
furniture.cpp:2:88: warning: bad option '-fssse3' to pragma 'optimize' [-Wpragmas]
furniture.cpp:2:88: warning: bad option '-fsse4' to pragma 'optimize' [-Wpragmas]
furniture.cpp:2:88: warning: bad option '-fpopcnt' to pragma 'optimize' [-Wpragmas]
furniture.cpp:2:88: warning: bad option '-fabm' to pragma 'optimize' [-Wpragmas]
furniture.cpp:2:88: warning: bad option '-fmmx' to pragma 'optimize' [-Wpragmas]
furniture.cpp:2:88: warning: bad option '-ffma' to pragma 'optimize' [-Wpragmas]
furniture.cpp:2:88: warning: bad option '-ftune=native' to pragma 'optimize' [-Wpragmas]
furniture.cpp:19:23: warning: bad option '-favx' to attribute 'optimize' [-Wattributes]
   19 | bool check(int x,int y){
      |                       ^
furniture.cpp:19:23: warning: bad option '-favx2' to attribute 'optimize' [-Wattributes]
furniture.cpp:19:23: warning: bad option '-fsse' to attribute 'optimize' [-Wattributes]
furniture.cpp:19:23: warning: bad option '-fsse2' to attribute 'optimize' [-Wattributes]
furniture.cpp:19:23: warning: bad option '-fsse3' to attribute 'optimize' [-Wattributes]
furniture.cpp:19:23: warning: bad option '-fssse3' to attribute 'optimize' [-Wattributes]
furniture.cpp:19:23: warning: bad option '-fsse4' to attribute 'optimize' [-Wattributes]
furniture.cpp:19:23: warning: bad option '-fpopcnt' to attribute 'optimize' [-Wattributes]
furniture.cpp:19:23: warning: bad option '-fabm' to attribute 'optimize' [-Wattributes]
furniture.cpp:19:23: warning: bad option '-fmmx' to attribute 'optimize' [-Wattributes]
furniture.cpp:19:23: warning: bad option '-ffma' to attribute 'optimize' [-Wattributes]
furniture.cpp:19:23: warning: bad option '-ftune=native' to attribute 'optimize' [-Wattributes]
furniture.cpp:69:13: warning: bad option '-favx' to attribute 'optimize' [-Wattributes]
   69 | signed main(){
      |             ^
furniture.cpp:69:13: warning: bad option '-favx2' to attribute 'optimize' [-Wattributes]
furniture.cpp:69:13: warning: bad option '-fsse' to attribute 'optimize' [-Wattributes]
furniture.cpp:69:13: warning: bad option '-fsse2' to attribute 'optimize' [-Wattributes]
furniture.cpp:69:13: warning: bad option '-fsse3' to attribute 'optimize' [-Wattributes]
furniture.cpp:69:13: warning: bad option '-fssse3' to attribute 'optimize' [-Wattributes]
furniture.cpp:69:13: warning: bad option '-fsse4' to attribute 'optimize' [-Wattributes]
furniture.cpp:69:13: warning: bad option '-fpopcnt' to attribute 'optimize' [-Wattributes]
furniture.cpp:69:13: warning: bad option '-fabm' to attribute 'optimize' [-Wattributes]
furniture.cpp:69:13: warning: bad option '-fmmx' to attribute 'optimize' [-Wattributes]
furniture.cpp:69:13: warning: bad option '-ffma' to attribute 'optimize' [-Wattributes]
furniture.cpp:69:13: warning: bad option '-ftune=native' to attribute 'optimize' [-Wattributes]
# Verdict Execution time Memory Grader output
1 Correct 1 ms 980 KB Output is correct
2 Correct 2 ms 1236 KB Output is correct
3 Correct 2 ms 1108 KB Output is correct
4 Correct 3 ms 1108 KB Output is correct
5 Correct 3 ms 1236 KB Output is correct
6 Correct 3 ms 1236 KB Output is correct
7 Correct 3 ms 1236 KB Output is correct
8 Correct 3 ms 1236 KB Output is correct
9 Correct 6 ms 1236 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 980 KB Output is correct
2 Correct 2 ms 1236 KB Output is correct
3 Correct 2 ms 1108 KB Output is correct
4 Correct 3 ms 1108 KB Output is correct
5 Correct 3 ms 1236 KB Output is correct
6 Correct 3 ms 1236 KB Output is correct
7 Correct 3 ms 1236 KB Output is correct
8 Correct 3 ms 1236 KB Output is correct
9 Correct 6 ms 1236 KB Output is correct
10 Correct 21 ms 1072 KB Output is correct
11 Correct 3 ms 852 KB Output is correct
12 Correct 184 ms 10816 KB Output is correct
13 Correct 61 ms 9040 KB Output is correct
14 Correct 280 ms 11156 KB Output is correct
15 Correct 296 ms 10632 KB Output is correct
16 Correct 267 ms 16884 KB Output is correct
17 Correct 437 ms 19512 KB Output is correct
18 Correct 298 ms 19116 KB Output is correct
19 Correct 287 ms 20536 KB Output is correct
20 Execution timed out 5041 ms 23960 KB Time limit exceeded
21 Halted 0 ms 0 KB -