QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#882236 | #8302. Incoming Asteroids | sz051 | Compile Error | / | / | C++20 | 2.4kb | 2025-02-04 22:32:31 | 2025-02-04 22:32:39 |
Judging History
This is the latest submission verdict.
- [2025-02-04 22:32:39]
- Judged
- Verdict: Compile Error
- Time: 0ms
- Memory: 0kb
- [2025-02-04 22:32:31]
- Submitted
answer
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
#include <queue>
#include <cassert>
#include <stack>
#include <random>
#include <map>
using namespace std;
void read(int &x){
x=0;
int f=1;
char c=getchar();
while(!('0'<=c && c<='9')){
if(c=='-'){
f=-1;
}
c=getchar();
}
while('0'<=c && c<='9'){
x=(x<<3)+(x<<1)+(c^48);
c=getchar();
}
x*=f;
}
int lg(int k){
return k==0?-1:__lg(k);
}
typedef vector<int> Array;
namespace Alarm{
int qlim[1000010],qh[1000010],delt[1000010],qcnt=0;
Array qp[1000010];
Array seps[1000010][22];
int sum[1000010];
Alarm(){}
int insert(Array pos,int lim){
qlim[++qcnt]=lim;
qp[qcnt]=pos;
qh[qcnt]=21;
while(qh[qcnt]>=0){
int cur=0;
for(int i:pos){
cur+=sum[i]|((1ll<<qh[qcnt])-1);
}
if(cur>=lim){
qh[qcnt]--;
}else{
delt[qcnt]=cur;
break;
}
}
for(int i:pos){
seps[i][qh[qcnt]+1].push_back(qcnt);
}
return qcnt;
}
Array update(int k,int v){
Array res;
int tp=lg(sum[k]^(sum[k]+v));
sum[k]+=v;
for(int p=-1;p<=tp;p++){
Array tmp=seps[k][p+1];
seps[k][p+1].clear();
for(int i:tmp){
//printf("[%lld %lld %lld]",k,p,i);
if(qh[i]!=p){
continue;
}
if(delt[i]-((sum[k]-v)|((1ll<<p)-1))+(sum[k]|((1ll<<p)-1))>=qlim[i]){
qh[i]--;
while(qh[i]>=0){
int cur=0;
for(int j:qp[i]){
cur+=sum[j]|((1ll<<qh[i])-1);
}
if(cur>=qlim[i]){
qh[i]--;
}else{
delt[i]=cur;
break;
}
}
if(qh[i]==-1){
res.push_back(i);
}else{
for(int j:qp[i]){
seps[j][qh[i]+1].push_back(i);
}
}
}else{
if(qh[i]==-1){
res.push_back(i);
}else{
delt[i]+=-((sum[k]-v)|((1ll<<p)-1))+(sum[k]|((1ll<<p)-1));
seps[k][p+1].push_back(i);
}
}
}
}
return res;
}
}
int n,m;
signed main(){
read(n);
read(m);
int opt,x,y;
while(m--){
read(opt);
if(opt==1){
read(x);
read(y);
Array cur(y,0);
for(int i=0;i<y;i++){
read(cur[i]);
}
Alarm::insert(cur,x);
}else{
read(x);
read(y);
Array cur=Alarm::update(x,y);
sort(cur.begin(),cur.end());
printf("%lld ",cur.size());
for(int i:cur){
printf("%d ",i);
}
putchar('\n');
}
}
return 0;
}
Details
answer.code:37:9: error: ISO C++ forbids declaration of ‘Alarm’ with no type [-fpermissive] 37 | Alarm(){} | ^~~~~ answer.code: In function ‘int Alarm::Alarm()’: answer.code:37:17: warning: no return statement in function returning non-void [-Wreturn-type] 37 | Alarm(){} | ^ answer.code: In function ‘int main()’: answer.code:125:36: warning: format ‘%lld’ expects argument of type ‘long long int’, but argument 2 has type ‘std::vector<int>::size_type’ {aka ‘long unsigned int’} [-Wformat=] 125 | printf("%lld ",cur.size()); | ~~~^ ~~~~~~~~~~ | | | | | std::vector<int>::size_type {aka long unsigned int} | long long int | %ld