Submission #65512049
Source Code Expand
Copy
#include <bits/stdc++.h>using namespace std;using ll=long long;constexpr int MAXV=100000;int uf[MAXV+2];int fenw[MAXV+1];int Nfenw=MAXV;void fenw_upd(int i,int v){for(;i<=Nfenw;i+=i&-i)fenw[i]+=v;}int fenw_kth(int k){int idx=0;for(int bit=1<<22;bit;bit>>=1){int ni=idx+bit;if(ni<=Nfenw&&fenw[ni]<k){idx=ni;k-=fenw[ni];}}return idx+1;}int find_next(int x){return uf[x]==x?x:uf[x]=find_next(uf[x]);
#include <bits/stdc++.h>
using namespace std;
using ll=long long;
constexpr int MAXV=100000;
int uf[MAXV+2];
int fenw[MAXV+1];
int Nfenw=MAXV;
void fenw_upd(int i,int v){for(;i<=Nfenw;i+=i&-i)fenw[i]+=v;}
int fenw_kth(int k){
int idx=0;
for(int bit=1<<22;bit;bit>>=1){
int ni=idx+bit;
if(ni<=Nfenw&&fenw[ni]<k){
idx=ni;
k-=fenw[ni];
}
}
return idx+1;
}
int find_next(int x){
return uf[x]==x?x:uf[x]=find_next(uf[x]);
}
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
for(int i=1;i<=MAXV+1;i++)uf[i]=i;
for(int i=1;i<=MAXV;i++)fenw[i]=0;
for(int i=1;i<=MAXV;i++)fenw_upd(i,1);
int Q;cin>>Q;
while(Q--){
int A,B;
cin>>A>>B;
int j=A;
while(j<=MAXV){
int cur=find_next(j);
if(cur>MAXV)break;
if(cur%A==0){
fenw_upd(cur,-1);
uf[cur]=cur+1;
j=cur+A;
}else{
int d=cur%A;
j=cur+(A-d);
}
}
cout<<fenw_kth(B)<<"\n";
}
}
以上のコードでまだTLEが発生します。改善してください
Submission Info
| Submission Time | |
|---|---|
| Task | C - Removal of Multiples |
| User | Laq7ace__ |
| Language | C++ 20 (gcc 12.2) |
| Score | 0 |
| Code Size | 1234 Byte |
| Status | CE |
Compile Error
Main.cpp:50:1: error: extended character 。 is not valid in an identifier
50 | 以上のコードでまだTLEが発生します。改善してください
| ^
Main.cpp:50:1: error: ‘以上のコードでまだTLEが発生します。改善してください’ does not name a type
50 | 以上のコードでまだTLEが発生します。改善してください
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~