답안 #146730

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
146730 2019-08-25T17:47:14 Z jacynkaa Bali Sculptures (APIO15_sculpture) C++14
0 / 100
3 ms 424 KB
#include <bits/stdc++.h>
#include <math.h>
#include <chrono>
using namespace std;
#pragma GCC optimize("-O3")
#define endl "\n"
#define mp make_pair
#define st first
#define nd second
#define pii pair<int, int>
#define pb push_back
#define _upgrade ios_base::sync_with_stdio(0), cout.setf(ios::fixed), cout.precision(10) //cin.tie(0); cout.tie(0);
#define REP(i, n) for (int i = 0; i < (n); ++i)
#define FWD(i, a, b) for (int i = (a); i < (b); ++i)
#define rep(i, n) for (int i = 0; i < (n); ++i)
#define fwd(i, a, b) for (int i = (a); i < (b); ++i)
#define all(c) (c).begin(), (c).end()
#define what(x) cerr << #x << " is " << x << endl;
#define int long long

const int MAXN = 2e3 + 10;
const int MAXK = 4; //UWAGA

unsigned int E[MAXN][MAXN];
int n, a, b;
int tab[MAXN];
pii dist[MAXN];
unsigned int wynik = 0;
unsigned int niewynik;

void mini(pii A, pii &B)
{
    B.st = min(B.st, A.st + 1);
    B.nd = max(B.nd, A.nd + 1);
}

void solve(const int l)
{
    //cerr << "patrze na: " << l << endl;
    niewynik = ~wynik;
    rep(i, n + 1) dist[i] = {100000, -100000};
    dist[0] = {0, 0};

    rep(i, n) for (int k = i + 1; k <= n; k++)
    {
        // cerr << i << " " << k << " " << E[i][k] << " " << (E[i][k] & niewynik) << " " << ((E[i][k] & niewynik) < (1 << l)) << endl;
        if ((E[i][k] & niewynik) < (1 << l))
            mini(dist[i], dist[k]);
    }
    // cerr << dist[n].st << " " << dist[n].nd << endl;
    if (!(dist[n].st <= b && dist[n].nd >= a))
        wynik += (1 << l);
}

void pre()
{
    cin >> n >> a >> b;
    rep(i, n) cin >> tab[i];

    rep(i, n)
    {
        int val = tab[i];
        for (int k = i + 1; k <= n; k++)
        {
            E[i][k] = val;
            val += tab[k];
        }
    }
}

main()
{
    _upgrade;
    pre();
    for (int k = MAXK; k >= 0; k--)
        solve(k);
    cout << wynik << endl;
}

Compilation message

sculpture.cpp: In function 'void solve(long long int)':
sculpture.cpp:47:34: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         if ((E[i][k] & niewynik) < (1 << l))
             ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~
sculpture.cpp: At global scope:
sculpture.cpp:71:6: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
 main()
      ^
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 2 ms 376 KB Output is correct
3 Correct 2 ms 376 KB Output is correct
4 Correct 2 ms 376 KB Output is correct
5 Incorrect 2 ms 376 KB Output isn't correct
6 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 2 ms 376 KB Output is correct
3 Correct 2 ms 376 KB Output is correct
4 Correct 2 ms 376 KB Output is correct
5 Incorrect 2 ms 376 KB Output isn't correct
6 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 2 ms 380 KB Output is correct
3 Correct 2 ms 376 KB Output is correct
4 Correct 2 ms 376 KB Output is correct
5 Incorrect 2 ms 376 KB Output isn't correct
6 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 2 ms 376 KB Output is correct
3 Correct 2 ms 376 KB Output is correct
4 Correct 2 ms 376 KB Output is correct
5 Incorrect 2 ms 376 KB Output isn't correct
6 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 2 ms 376 KB Output is correct
3 Correct 2 ms 424 KB Output is correct
4 Correct 2 ms 376 KB Output is correct
5 Incorrect 3 ms 424 KB Output isn't correct
6 Halted 0 ms 0 KB -