Submission #1261439

#TimeUsernameProblemLanguageResultExecution timeMemory
1261439asdfghqwertMinerals (JOI19_minerals)C++20
6 / 100
8 ms788 KiB
#include "minerals.h"
#include <bits/stdc++.h>
using namespace std;
void Solve(int n){
    vector<int> candi(2 * n);
    vector<bool> ansed(2 * n);
    for(int mask = 1 ; mask < 2 * n;mask += mask){
        int lst = 0;
        for(int i = 0 ; i < 2 * n ; i++){
            if(i & mask){
                int cur = Query(i+1);
                if(cur == lst){
                    candi[i] |= mask; 
                }
                lst = cur;
            }
        }
        for(int i = 0 ; i < 2 * n ; i++)if(i & mask)Query(i+1);
        for(int i = 0 ; i < 2 * n ; i++){
            if((i & mask) == 0){
                int cur = Query(i+1);
                if(cur != lst){
                    candi[i] |= mask; 
                }
                lst = cur;
            }
        }
        for(int i = 0 ; i < 2 * n ; i++)if((i & mask) == 0)Query(i+1);
    }
    for(int i = 0 ; i < 2 * n ; i++){
        if(ansed[i])continue;
        if(candi[i] < 2 * n){     
            Query(i+1);
            if(Query(candi[i]+1) == 1){
                ansed[i] = 1;
                ansed[candi[i]] = 1;
                Answer(i+1, candi[i]+1);
            }
            Query(i+1);
            Query(candi[i]+1);
        }
    }
}
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...