Submission #339107

#TimeUsernameProblemLanguageResultExecution timeMemory
33910712tqianRobots (IOI13_robots)C++17
0 / 100
1 ms364 KiB
#include "robots.h"
#include <bits/stdc++.h>
using namespace std;

#define f0r(i, a) f1r(i, 0, a)
#define f1r(i, a, b) for (int (i) = (a); (i) < (b); (i)++)

#define pb push_back
#define eb emplace_back
#define f first
#define s second
#define mp make_pair
#define sz(x) (int) (x).size()
#define all(x) (x).begin(), (x).end()

typedef long long ll;
typedef vector<int> vi;
typedef pair<int, int> pi;
typedef vector<pi> vpi;

int bzero(int A, int B, int T, int X[], int Y[], int W[], int S[]) {
    vi toys; f0r(i, T) toys.eb(X[i]);
    vi robots; f0r(i, A) robots.eb(W[i]);
    vi pre(A+T);
    sort(all(robots));
    sort(all(toys));
    f0r(i, T) {
        pre[toys[i]]++;
    }   
    f1r(i, 1, A+T) pre[i] += pre[i-1];
    auto check = [&](int x) -> bool {
        f0r(i, A) {
            if (T-pre[robots[i]] > (A-1-i)*x) return false;
        }
        if (T > A*x) return false;
        return true;
    };

    int lo = 1;
    int hi = A;
    while (hi-lo>1) {
        int mid = (lo+hi)/2;
        if (check(mid)) {
            hi = mid;
        } else {
            lo = mid+1;
        }
    }
    if (check(lo)) return lo;
    if (check(hi)) return hi;
    return -1;
}
int smallsolve(int A, int B, int T, int X[], int Y[], int W[], int S[]) {
    return -1;
}
int putaway(int A, int B, int T, int X[], int Y[], int W[], int S[]) {
    f0r(i, A) W[i]--;
    f0r(i, B) S[i]--;

    set<int> tmp;
    map<int, int> conv;
    int cnt = 0;

    f0r(i, T) tmp.insert(X[i]);
    f0r(i, A) tmp.insert(W[i]);
    for (int x : tmp) conv[x] = cnt++;
    f0r(i, T) X[i] = conv[X[i]];
    f0r(i, A) W[i] = conv[W[i]];

    tmp.clear(), conv.clear(), cnt = 0;

    f0r(i, T) tmp.insert(Y[i]);
    f0r(i, B) tmp.insert(S[i]);
    for (int x : tmp) conv[x] = cnt++;
    f0r(i, T) X[i] = conv[Y[i]];
    f0r(i, B) S[i] = conv[S[i]];

    if (B == 0) {
        return bzero(A, B, T, X, Y, W, S);
    } else if (A + B <= 1000) {
        return smallsolve(A, B, T, X, Y, W, S);
    }
    return 42;
}

Compilation message (stderr)

robots.cpp: In function 'int bzero(int, int, int, int*, int*, int*, int*)':
robots.cpp:6:31: warning: unnecessary parentheses in declaration of 'i' [-Wparentheses]
    6 | #define f1r(i, a, b) for (int (i) = (a); (i) < (b); (i)++)
      |                               ^
robots.cpp:5:19: note: in expansion of macro 'f1r'
    5 | #define f0r(i, a) f1r(i, 0, a)
      |                   ^~~
robots.cpp:22:14: note: in expansion of macro 'f0r'
   22 |     vi toys; f0r(i, T) toys.eb(X[i]);
      |              ^~~
robots.cpp:6:31: warning: unnecessary parentheses in declaration of 'i' [-Wparentheses]
    6 | #define f1r(i, a, b) for (int (i) = (a); (i) < (b); (i)++)
      |                               ^
robots.cpp:5:19: note: in expansion of macro 'f1r'
    5 | #define f0r(i, a) f1r(i, 0, a)
      |                   ^~~
robots.cpp:23:16: note: in expansion of macro 'f0r'
   23 |     vi robots; f0r(i, A) robots.eb(W[i]);
      |                ^~~
robots.cpp:6:31: warning: unnecessary parentheses in declaration of 'i' [-Wparentheses]
    6 | #define f1r(i, a, b) for (int (i) = (a); (i) < (b); (i)++)
      |                               ^
robots.cpp:5:19: note: in expansion of macro 'f1r'
    5 | #define f0r(i, a) f1r(i, 0, a)
      |                   ^~~
robots.cpp:27:5: note: in expansion of macro 'f0r'
   27 |     f0r(i, T) {
      |     ^~~
robots.cpp:6:31: warning: unnecessary parentheses in declaration of 'i' [-Wparentheses]
    6 | #define f1r(i, a, b) for (int (i) = (a); (i) < (b); (i)++)
      |                               ^
robots.cpp:30:5: note: in expansion of macro 'f1r'
   30 |     f1r(i, 1, A+T) pre[i] += pre[i-1];
      |     ^~~
robots.cpp: In lambda function:
robots.cpp:6:31: warning: unnecessary parentheses in declaration of 'i' [-Wparentheses]
    6 | #define f1r(i, a, b) for (int (i) = (a); (i) < (b); (i)++)
      |                               ^
robots.cpp:5:19: note: in expansion of macro 'f1r'
    5 | #define f0r(i, a) f1r(i, 0, a)
      |                   ^~~
robots.cpp:32:9: note: in expansion of macro 'f0r'
   32 |         f0r(i, A) {
      |         ^~~
robots.cpp: In function 'int putaway(int, int, int, int*, int*, int*, int*)':
robots.cpp:6:31: warning: unnecessary parentheses in declaration of 'i' [-Wparentheses]
    6 | #define f1r(i, a, b) for (int (i) = (a); (i) < (b); (i)++)
      |                               ^
robots.cpp:5:19: note: in expansion of macro 'f1r'
    5 | #define f0r(i, a) f1r(i, 0, a)
      |                   ^~~
robots.cpp:57:5: note: in expansion of macro 'f0r'
   57 |     f0r(i, A) W[i]--;
      |     ^~~
robots.cpp:6:31: warning: unnecessary parentheses in declaration of 'i' [-Wparentheses]
    6 | #define f1r(i, a, b) for (int (i) = (a); (i) < (b); (i)++)
      |                               ^
robots.cpp:5:19: note: in expansion of macro 'f1r'
    5 | #define f0r(i, a) f1r(i, 0, a)
      |                   ^~~
robots.cpp:58:5: note: in expansion of macro 'f0r'
   58 |     f0r(i, B) S[i]--;
      |     ^~~
robots.cpp:6:31: warning: unnecessary parentheses in declaration of 'i' [-Wparentheses]
    6 | #define f1r(i, a, b) for (int (i) = (a); (i) < (b); (i)++)
      |                               ^
robots.cpp:5:19: note: in expansion of macro 'f1r'
    5 | #define f0r(i, a) f1r(i, 0, a)
      |                   ^~~
robots.cpp:64:5: note: in expansion of macro 'f0r'
   64 |     f0r(i, T) tmp.insert(X[i]);
      |     ^~~
robots.cpp:6:31: warning: unnecessary parentheses in declaration of 'i' [-Wparentheses]
    6 | #define f1r(i, a, b) for (int (i) = (a); (i) < (b); (i)++)
      |                               ^
robots.cpp:5:19: note: in expansion of macro 'f1r'
    5 | #define f0r(i, a) f1r(i, 0, a)
      |                   ^~~
robots.cpp:65:5: note: in expansion of macro 'f0r'
   65 |     f0r(i, A) tmp.insert(W[i]);
      |     ^~~
robots.cpp:6:31: warning: unnecessary parentheses in declaration of 'i' [-Wparentheses]
    6 | #define f1r(i, a, b) for (int (i) = (a); (i) < (b); (i)++)
      |                               ^
robots.cpp:5:19: note: in expansion of macro 'f1r'
    5 | #define f0r(i, a) f1r(i, 0, a)
      |                   ^~~
robots.cpp:67:5: note: in expansion of macro 'f0r'
   67 |     f0r(i, T) X[i] = conv[X[i]];
      |     ^~~
robots.cpp:6:31: warning: unnecessary parentheses in declaration of 'i' [-Wparentheses]
    6 | #define f1r(i, a, b) for (int (i) = (a); (i) < (b); (i)++)
      |                               ^
robots.cpp:5:19: note: in expansion of macro 'f1r'
    5 | #define f0r(i, a) f1r(i, 0, a)
      |                   ^~~
robots.cpp:68:5: note: in expansion of macro 'f0r'
   68 |     f0r(i, A) W[i] = conv[W[i]];
      |     ^~~
robots.cpp:6:31: warning: unnecessary parentheses in declaration of 'i' [-Wparentheses]
    6 | #define f1r(i, a, b) for (int (i) = (a); (i) < (b); (i)++)
      |                               ^
robots.cpp:5:19: note: in expansion of macro 'f1r'
    5 | #define f0r(i, a) f1r(i, 0, a)
      |                   ^~~
robots.cpp:72:5: note: in expansion of macro 'f0r'
   72 |     f0r(i, T) tmp.insert(Y[i]);
      |     ^~~
robots.cpp:6:31: warning: unnecessary parentheses in declaration of 'i' [-Wparentheses]
    6 | #define f1r(i, a, b) for (int (i) = (a); (i) < (b); (i)++)
      |                               ^
robots.cpp:5:19: note: in expansion of macro 'f1r'
    5 | #define f0r(i, a) f1r(i, 0, a)
      |                   ^~~
robots.cpp:73:5: note: in expansion of macro 'f0r'
   73 |     f0r(i, B) tmp.insert(S[i]);
      |     ^~~
robots.cpp:6:31: warning: unnecessary parentheses in declaration of 'i' [-Wparentheses]
    6 | #define f1r(i, a, b) for (int (i) = (a); (i) < (b); (i)++)
      |                               ^
robots.cpp:5:19: note: in expansion of macro 'f1r'
    5 | #define f0r(i, a) f1r(i, 0, a)
      |                   ^~~
robots.cpp:75:5: note: in expansion of macro 'f0r'
   75 |     f0r(i, T) X[i] = conv[Y[i]];
      |     ^~~
robots.cpp:6:31: warning: unnecessary parentheses in declaration of 'i' [-Wparentheses]
    6 | #define f1r(i, a, b) for (int (i) = (a); (i) < (b); (i)++)
      |                               ^
robots.cpp:5:19: note: in expansion of macro 'f1r'
    5 | #define f0r(i, a) f1r(i, 0, a)
      |                   ^~~
robots.cpp:76:5: note: in expansion of macro 'f0r'
   76 |     f0r(i, B) S[i] = conv[S[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...