Submission #983893

#TimeUsernameProblemLanguageResultExecution timeMemory
983893vjudge1게임 (APIO22_game)C++17
30 / 100
159 ms247732 KiB
#include "game.h"
#include <bits/stdc++.h>

using namespace std;

#define TL ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
#define rall(s) s.rbegin(),s.rend()
#define all(s) s.begin(),s.end()
#define pb push_back
#define se second
#define fi first
#define ll long long
#define ld long double
#define YES cout<<"YES\n"
#define Yes cout<<"Yes\n"
#define yes cout<<"yes\n"
#define NO cout<<"NO\n"
#define No cout<<"No\n"
#define no cout<<"no\n"


const int N = 3e3 + 9 , mod = 1e9 + 7;
bool a[N][1009][2] ;
int b[N][1009][2] , ind = 0;
vector<int>v[5000000];

int n , k;
int ans = 0 , ind1 = 0;
vector<int>v1;

void get(int x , int y , int f){
    a[x][y][f] = 1;
    int m = b[x][y][f];
    for(auto to : v[m])
        if(!a[to][y][f])
            get(to , y , f);
    v[m].clear();
    b[x][y][f] = 0;
    v1.pb(m);
}



void add(int x , int y , int f , int p){
    if(b[x][y][f] == 0){
        if(ind < 5e6)
            b[x][y][f] = ++ind;
        else
            b[x][y][f] = v1[ind1] , ind1++;
    }
    v[b[x][y][f]].pb(p);

}
void init(int n,  int k){
    ::n = n , ::k = k;
    for(int i = 1; i <= k; i++)
        a[i][i][0] = a[i][i][1] = 1;
    for(int i = 1; i < k; i++){
        for(int j = 1; j <= k; j++){
            if(!a[i + 1][j][0])
                add(i , j , 0 , i + 1);
            if(!a[i][j][1])
                add(i + 1 , j , 1 , i);
            if(a[i][j][0])
                get(i ,  j ,0);
            if(a[i + 1][j][1])
                get(i + 1,j , 1);
            }
    }
}

int add_teleporter(int x , int y){
    if(ans == 1)
        return ans;
    x++ , y++;
    for(int i = 1; i <= k; i++){
        if(!a[y][i][0])
            add(x , i , 0 , y);
        if(!a[x][i][1])
            add(y , i , 1 , x );
        if(a[x][i][0] && a[y][i][1])
            ans = 1;
        if(a[x][i][0])
            get(x , i , 0);
        if(a[y][i][1])
            get(y , i ,  1);
    }
    return ans;
}
/*
int main(){
    TL;
    #ifndef ONLINE_JUDGE
        freopen("input.txt", "r", stdin);
        freopen("output.txt", "w", stdout);
    #endif
    init(6 , 3);
    cout<<add_teleporter(3 , 4)<<"\n";
    cout<<add_teleporter(5 , 0)<<"\n";
    cout<<add_teleporter(4 , 5)<<"\n";
    cout<<add_teleporter(5 , 3)<<"\n";
    cout<<add_teleporter(1 , 4)<<"\n";
}*/
// Author : حسن
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...