답안 #947344

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
947344 2024-03-15T22:29:58 Z MarwenElarbi Bitwise (BOI06_bitwise) C++17
55 / 100
1 ms 2796 KB
#include <bits/stdc++.h>
#pragma GCC optimize("O3")
#pragma GCC optimize("unroll-loops")
#define vi vector<int>
#define ve vector
#define ll long long
#define vl vector<ll>
#define vll vector<pair<ll,ll>>
#define onbit __builtin_popcount
#define ii pair<int,int>
#define vvi vector<vi>
#define vii vector<ii>
#define gii greater<ii>
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define INF 1e18
#define eps 1e-7
#define eps1 1e-2
#define optimise ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
#define MAX_A 1e5+5
using namespace std;
const ll MOD = 1e9+7;
const int nax = 1e5+5;
const int MAX_VAL = 1e6+1;
double PI=3.14159265359;
int arx[8]={1,0,0,-1,-1,-1, 1, 1};
int ary[8]={0,1,-1, 0, 1,-1,-1, 1};
void setIO(string s) {
    freopen((s + ".in").c_str(), "r", stdin);
    freopen((s + ".out").c_str(), "w", stdout);
}
vector<ii> adj[nax];
int main(){
    optimise;
    /*#ifndef ONLINE_JUDGE
        freopen("input.txt", "r", stdin);
        freopen("output.txt", "w", stdout);
    #endif*/
    int n,k;
    cin>>n>>k;
    int tab[k];
    for (int i = 0; i < k; ++i)
    {
        cin>>tab[i];
    }
    int a[n];
    int b[n];
    for (int i = 0; i < n; ++i)
    {
        cin>>a[i]>>b[i];
    }
    int ans=0;
    for (int i = 30; i >= 0; --i)
    {
        int cnt=0;
        bool test=true;
        for (int j = 0; j < k; ++j)
        {
            int cur=tab[j];
            //cout <<cur<<endl;
            bool nabba=false;
            while(cur--){
                //cout <<a[cnt]<<" "<<b[cnt]<<" "<<i<<endl;
                if(b[cnt]-a[cnt]>=(1<<i)){
                    //cout <<"hey"<<endl;
                    nabba=true;
                }else if((a[cnt]&(1<<i))||(b[cnt]&(1<<i))) {
                   // cout <<"hey"<<endl;
                    nabba=true;
                }
                cnt++;
            }
            test&=nabba;
        }
        //cout <<test<<endl;
        if(test){
            ans+=(1<<i);  
            //cout <<"hey"<<" "<<(1<<i)<<endl;
        }
        //cout <<i<<endl;
        cnt=0;
        for (int j = 0; j < k; ++j)
        {
            int cur=tab[j];
            bool nabba=false;
            while(cur--){
                if(nabba){
                    //cout <<a[cnt]<<" "<<b[cnt]<<endl;
                    cnt++;
                    continue;
                }
                if(a[cnt]&(1<<i)||b[cnt]&(1<<i)){
                    if(b[cnt]-a[cnt]<(1<<i)||test){
                        //cout <<a[cnt]<<" "<<b[cnt]<<endl;
                        nabba=true;
                        b[cnt]-=(1<<i);
                        a[cnt]-=(1<<i);
                        a[cnt]=max(a[cnt],0);
                        b[cnt]=max(b[cnt],0);
                    }
                }
                // <<a[cnt]<<" "<<b[cnt]<<endl;
                cnt++;
            }
            
        }
    }
    cout <<ans<<endl;
}

Compilation message

bitwise.cpp: In function 'void setIO(std::string)':
bitwise.cpp:31:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   31 |     freopen((s + ".in").c_str(), "r", stdin);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
bitwise.cpp:32:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   32 |     freopen((s + ".out").c_str(), "w", stdout);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 2648 KB Output is correct
2 Correct 1 ms 2652 KB Output is correct
3 Correct 1 ms 2652 KB Output is correct
4 Correct 1 ms 2652 KB Output is correct
5 Incorrect 1 ms 2648 KB Output isn't correct
6 Incorrect 1 ms 2652 KB Output isn't correct
7 Correct 1 ms 2648 KB Output is correct
8 Correct 1 ms 2648 KB Output is correct
9 Incorrect 1 ms 2652 KB Output isn't correct
10 Correct 1 ms 2652 KB Output is correct
11 Correct 1 ms 2652 KB Output is correct
12 Incorrect 1 ms 2652 KB Output isn't correct
13 Incorrect 1 ms 2648 KB Output isn't correct
14 Incorrect 1 ms 2652 KB Output isn't correct
15 Correct 1 ms 2652 KB Output is correct
16 Correct 1 ms 2652 KB Output is correct
17 Incorrect 1 ms 2652 KB Output isn't correct
18 Correct 1 ms 2652 KB Output is correct
19 Incorrect 1 ms 2652 KB Output isn't correct
20 Incorrect 1 ms 2796 KB Output isn't correct