Submission #1083807

#TimeUsernameProblemLanguageResultExecution timeMemory
1083807alexander707070게임 (APIO22_game)C++17
60 / 100
2217 ms7356 KiB
#include<bits/stdc++.h>

#define MAXN 30007
using namespace std;

int n,k;
bitset<1000> can[MAXN];
bitset<1000> pref[1007],zero;

vector<int> v[MAXN];
int li[MAXN],tim;

void init(int N, int K){
    n=N; k=K;

    for(int i=0;i<k;i++){
        for(int f=i+1;f<k;f++){
            can[i][f]=1;
        }
    }

    for(int i=0;i<k;i++){
        pref[i][i]=1;
        if(i>0)pref[i]|=pref[i-1];
    }
}

void update(int x,int s){
    if(can[x][s])return;

    can[x][s]=1;
    li[x]=tim;

    for(int i=0;i<v[x].size();i++){
        if(li[v[x][i]]==tim)continue;
        update(v[x][i],s);
    }
}

int check(){
    for(int i=0;i<k;i++){
        if((can[i]&pref[i])!=zero)return 1;
    }
    return 0;
}

int add_teleporter(int a, int b){
    v[b].push_back(a);

    for(int i=0;i<k;i++){
        if(can[b][i]==1 and can[a][i]==0){
            tim++; update(a,i);
        }
    }
    if(b<k and can[a][b]==0){
        tim++; update(a,b);
    }

    return check();
}

/*int main(){
    init(6, 3);

    cout<<add_teleporter(3, 4);
    cout<<add_teleporter(5, 0);
    cout<<add_teleporter(4, 5);
    cout<<add_teleporter(5, 3);
    cout<<add_teleporter(1, 4);

    return 0;
}*/

Compilation message (stderr)

game.cpp: In function 'void update(int, int)':
game.cpp:34:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   34 |     for(int i=0;i<v[x].size();i++){
      |                 ~^~~~~~~~~~~~
#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...