답안 #1072811

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1072811 2024-08-24T05:32:04 Z Cyanberry Minerals (JOI19_minerals) C++14
0 / 100
1 ms 592 KB
#include <bits/stdc++.h>
using namespace std;
#include "minerals.h"
void Solve(int types) {
    bool side[types * 2];
    int sT[types], sF[types], relT[types], relF[types], match[types * 2], limits[types * 2];
    for (int i=0; i<types * 2; ++i) {
        side[i] = false;
        match[i] = 0;
    }
    int last = 0, sTc = 0, sFc = 0;
    for (int i=0; i<types * 2; ++i) {
        int curr = Query(i+1);
        if (curr > last) {
            ++last;
            sT[sTc] = i+1;
            ++sTc;
            side[i] = true;
        } else {
            sF[sFc] = i+1;
            ++sFc;
            limits[i] = sTc;
        }
    }
    bool inside[types];
    for (int i =0; i < types; ++i) {
        inside[i] = true;
    }
    for (int i = log2(types); i >= 0; --i) {
        // for (int i : match) {
        //     cerr<<i<<' ';
        // }
        // cerr<<'\n';
        for (int j = 0; j < types; ++j) {
            if (((j & (1<<i)) > 0) == inside[j]) {
                last = Query(sT[j]);
                inside[j] = !inside[j];
            }
        }
        for (int j =0; j < types; ++j) {
            if (j > limits[sF[j]-1]) continue;
            int curr = Query(sF[j]);
            if (curr != last) {
                match[sF[j]-1] |= (1<<i);
                last = curr;
            }
        }
    }
    for (int i = 0; i <  types * 2; ++i) {
        if (match[i] > 0) {
            Answer(i+1, sT[match[i]]);
        }
    }
}

Compilation message

minerals.cpp: In function 'void Solve(int)':
minerals.cpp:5:10: warning: variable 'side' set but not used [-Wunused-but-set-variable]
    5 |     bool side[types * 2];
      |          ^~~~
minerals.cpp:6:31: warning: unused variable 'relT' [-Wunused-variable]
    6 |     int sT[types], sF[types], relT[types], relF[types], match[types * 2], limits[types * 2];
      |                               ^~~~
minerals.cpp:6:44: warning: unused variable 'relF' [-Wunused-variable]
    6 |     int sT[types], sF[types], relT[types], relF[types], match[types * 2], limits[types * 2];
      |                                            ^~~~
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 344 KB Wrong Answer [6]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 592 KB Wrong Answer [6]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 344 KB Wrong Answer [6]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 344 KB Wrong Answer [6]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 344 KB Wrong Answer [6]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 344 KB Wrong Answer [6]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 344 KB Wrong Answer [6]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 344 KB Wrong Answer [6]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 344 KB Wrong Answer [6]
2 Halted 0 ms 0 KB -