缺少角落案件

时间:2016-01-16 11:05:38

标签: algorithm stack

以下是问题的链接 https://www.hackerrank.com/challenges/and-xor-or/copy-from/16519519 我已经实现了O(n)解决方案,看起来没问题(没有TLE和29个测试卡从32中传出)。但我的解决方案是一些测试版失败,我无法找到错误,当然我错过了一些角落案例。任何暗示都会有很大的帮助。我已经发布了我已经运行并提交的代码。

#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <stack>

#define ul unsigned long
using namespace std;


ul comp(ul a, ul b){
    ul result = ((a&b)^(a|b))&(a^b);
    return result;
}

int main() {
    /* Enter your code here. Read input from STDIN. Print output to STDOUT */   
    int n;
    cin>>n;
    vector<ul>ip(n);
    for(int i=0;i<n;i++)
        cin>>ip[i];
    stack<ul>st;
    ul result=0;
    for(int i=0;i<n;i++){
        if(st.empty())
            st.push(ip[i]);
        else{
            result=max(result,comp(st.top(),ip[i]));
            while(!st.empty() && st.top()>ip[i]){
                result=max(result,comp(st.top(),ip[i]));
                st.pop();
            }
            st.push(ip[i]);
        }
    }
    cout<<result;
    return 0;
}

0 个答案:

没有答案