QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#788068 | #9745. 递增序列 | isWFnoya# | WA | 276ms | 10228kb | C++20 | 1.8kb | 2024-11-27 15:48:14 | 2024-11-27 15:48:14 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<ll,ll> PII;
const int N=1e6+10;
char s[N];
vector<int> e[N];
ll n,k;
ll a[N];
ll tg[N];
ll as[N];
int merge(int x,int y){
// cout<<x<<" "<<y<<endl;
if(x>y) swap(x,y);
if(y==2) return x;
if(x==y) return x;
return -1;
}
bool dfs(int x,int l,int r){
if(x<0||l>r) return true;
int flag=2;
int cnt=0,fl=0;
vector<ll> v;
for(int i=l;i<=r;i++){
if((a[i]>>x)&1) v.push_back(1);
else v.push_back(0);
}
for(int i=1;i<v.size();i++){
if(v[i]!=v[i-1]){
cnt++;
if(cnt>=2){
flag=-1;
return false;
}
else{
if(v[i]>v[i-1]) flag=0;
else flag=1;
fl=i;
}
}
}
tg[x]=merge(tg[x],flag);
if(!dfs(x-1,l,l+fl-1)) return false;
if(!dfs(x-1,l+fl,r)) return false;
return true;
}
void __(){
scanf("%lld%lld",&n,&k);
for(int i=1;i<=n;i++) scanf("%lld",&a[i]);
for(int i=0;i<=64;i++) tg[i]=2;
if(!dfs(60,1,n)){
puts("0");
return;
}
ll val=1;
for(int i=0;i<=60;i++){
if(tg[i]==2) val*=2;
as[i]=val;
}
ll ans=0;
for(int i=60;i>=0;i--){
int val=(k>>i)&1;
if(val&&(tg[i]==0||tg[i]==2)){
if(i==0) ans++;
else ans+=as[i-1];
}
if(tg[i]!=2&&val!=tg[i]) break;
}
for(int i=1;i<=n;i++) a[i]^=k;
bool flag=1;
for(int i=2;i<=n;i++){
if(a[i]<a[i-1]){
flag=0;
break;
}
}
ans+=flag;
printf("%lld\n",ans);
}
int main(){
int _;
cin>>_;
while(_--){
__();
}
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 3ms
memory: 9944kb
input:
1 4 17 3 2 5 16
output:
4
result:
ok single line: '4'
Test #2:
score: -100
Wrong Answer
time: 276ms
memory: 10228kb
input:
36156 2 732025001343805266 563399128172323734 55283226774627822 7 388099190813067712 564150557919527813 457487771983557281 332055400678110195 760833651510929158 785768483273197875 690506113272551236 463276585748519124 2 798714574862593347 426890163990834364 434764725667883272 1 414708220571820990 42...
output:
288230376151711744 0 432345564227567616 414708220571820991 716398192192370638 0 1949654914769744 0 0 0 811009189367843523 0 0 0 114457959388827198 36028797018963968 0 0 91540211282631659 0 694703231769895640 144115188075855872 0 0 0 0 432345564227567616 65333152962117911 753346372609875093 180143985...
result:
wrong answer 44th lines differ - expected: '0', found: '4503599627370496'