Submission #203341

# Submission time Handle Problem Language Result Execution time Memory
203341 2020-02-20T09:11:55 Z theStaticMind Minerals (JOI19_minerals) C++14
80 / 100
315 ms 6052 KB
#include<bits/stdc++.h>
#define pb push_back
#define ii pair<int,int>
#define all(x) (x).begin(),(x).end()
#define sz(x) (int)(x).size()
#define INF 1000000000//00000000
#define modulo 1000000007
#define mod 998244353
//#define int long long int
using namespace std;

#include "minerals.h"

int last = 0;
set<int> S;

void add(int x){
      if(S.count(x))S.erase(x);
      else S.insert(x);
}

void extract(vector<int>& A, vector<int>& B, vector<int>& X, vector<int>& Y){
      int n = sz(A), m = sz(B);
      for(int i = 0; i < m; i++){
            int v = Query(B[i]);
            add(B[i]);
            if(v == last){
                  X.pb(B[i]);
            }
            else Y.pb(B[i]);
            last = v;
      }
}

void divide(vector<int>& A, vector<int>& B){
      int n = A.size();
      if(n == 1){
            Answer(A[0], B[0]);
            return;
      }
      vector<int> X, Y;
      vector<int> tempA, tempB;
      for(int i = 0; i < n / 2; i++)tempA.pb(A[i]);
      for(int i = n / 2; i < n; i++)tempB.pb(A[i]);
      if(!(S.count(tempA[0]) ^ S.count(tempB[0]))){
            if(tempB.size() > tempA.size()) swap(tempA, tempB);
            for(int i = 0; i < tempB.size(); i++) last = Query(tempB[i]), add(tempB[i]);
      }
      if(S.count(tempB[0])){
            swap(tempA, tempB);
      }
      extract(tempA, B, X, Y);
      divide(tempA, X);
      divide(tempB, Y);
}

void Solve(int N) {
      vector<int> A, B;

      for(int i = 1; i <= 2 * N; i++){
            int q = Query(i);
            S.insert(i);
            if(last == q){
                  B.pb(i);
            }
            else{
                  A.pb(i);
            }
            last = q;
      }
      divide(A, B);
}

Compilation message

minerals.cpp: In function 'void extract(std::vector<int>&, std::vector<int>&, std::vector<int>&, std::vector<int>&)':
minerals.cpp:23:11: warning: unused variable 'n' [-Wunused-variable]
       int n = sz(A), m = sz(B);
           ^
minerals.cpp: In function 'void divide(std::vector<int>&, std::vector<int>&)':
minerals.cpp:47:30: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
             for(int i = 0; i < tempB.size(); i++) last = Query(tempB[i]), add(tempB[i]);
                            ~~^~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 5 ms 376 KB Output is correct
2 Correct 5 ms 376 KB Output is correct
3 Correct 5 ms 248 KB Output is correct
4 Correct 6 ms 248 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 9 ms 376 KB Output is correct
2 Correct 13 ms 632 KB Output is correct
3 Correct 24 ms 760 KB Output is correct
4 Correct 46 ms 1400 KB Output is correct
5 Correct 95 ms 2296 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 5 ms 376 KB Output is correct
2 Correct 5 ms 376 KB Output is correct
3 Correct 5 ms 248 KB Output is correct
4 Correct 6 ms 248 KB Output is correct
5 Correct 9 ms 376 KB Output is correct
6 Correct 13 ms 632 KB Output is correct
7 Correct 24 ms 760 KB Output is correct
8 Correct 46 ms 1400 KB Output is correct
9 Correct 95 ms 2296 KB Output is correct
10 Correct 9 ms 504 KB Output is correct
11 Correct 62 ms 1656 KB Output is correct
12 Correct 100 ms 2424 KB Output is correct
13 Correct 81 ms 2424 KB Output is correct
14 Correct 73 ms 2296 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 5 ms 376 KB Output is correct
2 Correct 5 ms 376 KB Output is correct
3 Correct 5 ms 248 KB Output is correct
4 Correct 6 ms 248 KB Output is correct
5 Correct 9 ms 376 KB Output is correct
6 Correct 13 ms 632 KB Output is correct
7 Correct 24 ms 760 KB Output is correct
8 Correct 46 ms 1400 KB Output is correct
9 Correct 95 ms 2296 KB Output is correct
10 Correct 9 ms 504 KB Output is correct
11 Correct 62 ms 1656 KB Output is correct
12 Correct 100 ms 2424 KB Output is correct
13 Correct 81 ms 2424 KB Output is correct
14 Correct 73 ms 2296 KB Output is correct
15 Correct 280 ms 5748 KB Output is correct
16 Correct 294 ms 5748 KB Output is correct
17 Correct 219 ms 5744 KB Output is correct
18 Correct 203 ms 5544 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 5 ms 376 KB Output is correct
2 Correct 5 ms 376 KB Output is correct
3 Correct 5 ms 248 KB Output is correct
4 Correct 6 ms 248 KB Output is correct
5 Correct 9 ms 376 KB Output is correct
6 Correct 13 ms 632 KB Output is correct
7 Correct 24 ms 760 KB Output is correct
8 Correct 46 ms 1400 KB Output is correct
9 Correct 95 ms 2296 KB Output is correct
10 Correct 9 ms 504 KB Output is correct
11 Correct 62 ms 1656 KB Output is correct
12 Correct 100 ms 2424 KB Output is correct
13 Correct 81 ms 2424 KB Output is correct
14 Correct 73 ms 2296 KB Output is correct
15 Correct 280 ms 5748 KB Output is correct
16 Correct 294 ms 5748 KB Output is correct
17 Correct 219 ms 5744 KB Output is correct
18 Correct 203 ms 5544 KB Output is correct
19 Correct 286 ms 5800 KB Output is correct
20 Correct 292 ms 5872 KB Output is correct
21 Correct 219 ms 6000 KB Output is correct
22 Correct 201 ms 5620 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 5 ms 376 KB Output is correct
2 Correct 5 ms 376 KB Output is correct
3 Correct 5 ms 248 KB Output is correct
4 Correct 6 ms 248 KB Output is correct
5 Correct 9 ms 376 KB Output is correct
6 Correct 13 ms 632 KB Output is correct
7 Correct 24 ms 760 KB Output is correct
8 Correct 46 ms 1400 KB Output is correct
9 Correct 95 ms 2296 KB Output is correct
10 Correct 9 ms 504 KB Output is correct
11 Correct 62 ms 1656 KB Output is correct
12 Correct 100 ms 2424 KB Output is correct
13 Correct 81 ms 2424 KB Output is correct
14 Correct 73 ms 2296 KB Output is correct
15 Correct 280 ms 5748 KB Output is correct
16 Correct 294 ms 5748 KB Output is correct
17 Correct 219 ms 5744 KB Output is correct
18 Correct 203 ms 5544 KB Output is correct
19 Correct 286 ms 5800 KB Output is correct
20 Correct 292 ms 5872 KB Output is correct
21 Correct 219 ms 6000 KB Output is correct
22 Correct 201 ms 5620 KB Output is correct
23 Correct 315 ms 6004 KB Output is correct
24 Correct 301 ms 5968 KB Output is correct
25 Correct 227 ms 6000 KB Output is correct
26 Correct 213 ms 6052 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 5 ms 376 KB Output is correct
2 Correct 5 ms 376 KB Output is correct
3 Correct 5 ms 248 KB Output is correct
4 Correct 6 ms 248 KB Output is correct
5 Correct 9 ms 376 KB Output is correct
6 Correct 13 ms 632 KB Output is correct
7 Correct 24 ms 760 KB Output is correct
8 Correct 46 ms 1400 KB Output is correct
9 Correct 95 ms 2296 KB Output is correct
10 Correct 9 ms 504 KB Output is correct
11 Correct 62 ms 1656 KB Output is correct
12 Correct 100 ms 2424 KB Output is correct
13 Correct 81 ms 2424 KB Output is correct
14 Correct 73 ms 2296 KB Output is correct
15 Correct 280 ms 5748 KB Output is correct
16 Correct 294 ms 5748 KB Output is correct
17 Correct 219 ms 5744 KB Output is correct
18 Correct 203 ms 5544 KB Output is correct
19 Correct 286 ms 5800 KB Output is correct
20 Correct 292 ms 5872 KB Output is correct
21 Correct 219 ms 6000 KB Output is correct
22 Correct 201 ms 5620 KB Output is correct
23 Correct 315 ms 6004 KB Output is correct
24 Correct 301 ms 5968 KB Output is correct
25 Correct 227 ms 6000 KB Output is correct
26 Correct 213 ms 6052 KB Output is correct
27 Incorrect 305 ms 6004 KB Wrong Answer [2]
28 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 5 ms 376 KB Output is correct
2 Correct 5 ms 376 KB Output is correct
3 Correct 5 ms 248 KB Output is correct
4 Correct 6 ms 248 KB Output is correct
5 Correct 9 ms 376 KB Output is correct
6 Correct 13 ms 632 KB Output is correct
7 Correct 24 ms 760 KB Output is correct
8 Correct 46 ms 1400 KB Output is correct
9 Correct 95 ms 2296 KB Output is correct
10 Correct 9 ms 504 KB Output is correct
11 Correct 62 ms 1656 KB Output is correct
12 Correct 100 ms 2424 KB Output is correct
13 Correct 81 ms 2424 KB Output is correct
14 Correct 73 ms 2296 KB Output is correct
15 Correct 280 ms 5748 KB Output is correct
16 Correct 294 ms 5748 KB Output is correct
17 Correct 219 ms 5744 KB Output is correct
18 Correct 203 ms 5544 KB Output is correct
19 Correct 286 ms 5800 KB Output is correct
20 Correct 292 ms 5872 KB Output is correct
21 Correct 219 ms 6000 KB Output is correct
22 Correct 201 ms 5620 KB Output is correct
23 Correct 315 ms 6004 KB Output is correct
24 Correct 301 ms 5968 KB Output is correct
25 Correct 227 ms 6000 KB Output is correct
26 Correct 213 ms 6052 KB Output is correct
27 Incorrect 305 ms 6004 KB Wrong Answer [2]
28 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 5 ms 376 KB Output is correct
2 Correct 5 ms 376 KB Output is correct
3 Correct 5 ms 248 KB Output is correct
4 Correct 6 ms 248 KB Output is correct
5 Correct 9 ms 376 KB Output is correct
6 Correct 13 ms 632 KB Output is correct
7 Correct 24 ms 760 KB Output is correct
8 Correct 46 ms 1400 KB Output is correct
9 Correct 95 ms 2296 KB Output is correct
10 Correct 9 ms 504 KB Output is correct
11 Correct 62 ms 1656 KB Output is correct
12 Correct 100 ms 2424 KB Output is correct
13 Correct 81 ms 2424 KB Output is correct
14 Correct 73 ms 2296 KB Output is correct
15 Correct 280 ms 5748 KB Output is correct
16 Correct 294 ms 5748 KB Output is correct
17 Correct 219 ms 5744 KB Output is correct
18 Correct 203 ms 5544 KB Output is correct
19 Correct 286 ms 5800 KB Output is correct
20 Correct 292 ms 5872 KB Output is correct
21 Correct 219 ms 6000 KB Output is correct
22 Correct 201 ms 5620 KB Output is correct
23 Correct 315 ms 6004 KB Output is correct
24 Correct 301 ms 5968 KB Output is correct
25 Correct 227 ms 6000 KB Output is correct
26 Correct 213 ms 6052 KB Output is correct
27 Incorrect 305 ms 6004 KB Wrong Answer [2]
28 Halted 0 ms 0 KB -