QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#495501 | #9156. 百万富翁 | TimDee# | 15 | 596ms | 78716kb | C++17 | 4.0kb | 2024-07-27 21:19:20 | 2024-07-27 21:19:20 |
Judging History
answer
#include "richest.h"
#include <bits/stdc++.h>
using namespace std;
#define forn(i,n) for(int i=0; i<(n); ++i)
#define pb push_back
#define pi pair<int,int>
#define f first
#define s second
#define all(x) x.begin(), x.end()
//1 183 3473 20834 62500
int richest(int n, int T, int S) {
if (T==1) {
vector<int> f,s;
forn(i,n) forn(j,i) {f.pb(j); s.pb(i);}
auto z = ask(f,s);
vector<pi> cnt(n);
forn(i,n) cnt[i].s=i;
for(auto&x:z) cnt[x].f++;
sort(all(cnt));
return cnt[n-1].s;
}
vector<int> a; forn(i,n) a.pb(i);
for(int it=0; it<6; ++it) {
vector<int> f,s;
for(int i=0; i<a.size(); i+=2) {
f.pb(a[i]);
s.pb(a[i+1]);
}
auto z = ask(f,s);
a = z;
}
vector<int> cnt(n);
for(int it=0; it<1; ++it) {
vector<int> f,s;
int m=a.size(), k=3;
for(int i=0; i+k<a.size(); i+=k) {
for(int x=0; x<k; ++x) {
for(int y=x+1; y<k; ++y) {
f.pb(a[i+x]);
s.pb(a[i+y]);
}
}
}
int k2=m%k;
for(int i=m-(m%k); i<m; i+=k) {
for(int x=0; x<k2; ++x) {
for(int y=x+1; y<k2; ++y) {
f.pb(a[i+x]);
s.pb(a[i+y]);
}
}
}
auto z = ask(f,s);
for(auto&x:z) cnt[x]++;
vector<int> b;
forn(i,n) if (cnt[i]==k-1) b.pb(i);
forn(i,n) cnt[i]=0;
for(int i=z.size()-k2*(k2-1)/2; i<z.size(); ++i) ++cnt[z[i]];
forn(i,n) if (cnt[i]==k2-1) b.pb(i);
forn(i,n) cnt[i]=0;
a=b;
}
for(int it=0; it<1; ++it) {
vector<int> f,s;
int m=a.size(), k=6;
for(int i=0; i+k<a.size(); i+=k) {
for(int x=0; x<k; ++x) {
for(int y=x+1; y<k; ++y) {
f.pb(a[i+x]);
s.pb(a[i+y]);
}
}
}
int k2=m%k;
for(int i=m-(m%k); i<m; i+=k) {
for(int x=0; x<k2; ++x) {
for(int y=x+1; y<k2; ++y) {
f.pb(a[i+x]);
s.pb(a[i+y]);
}
}
}
auto z = ask(f,s);
for(auto&x:z) cnt[x]++;
vector<int> b;
forn(i,n) if (cnt[i]==k-1) b.pb(i);
forn(i,n) cnt[i]=0;
for(int i=z.size()-k2*(k2-1)/2; i<z.size(); ++i) ++cnt[z[i]];
forn(i,n) if (cnt[i]==k2-1) b.pb(i);
forn(i,n) cnt[i]=0;
a=b;
}
for(int it=0; it<1; ++it) {
vector<int> f,s;
int m=a.size(), k=19;
for(int i=0; i+k<a.size(); i+=k) {
for(int x=0; x<k; ++x) {
for(int y=x+1; y<k; ++y) {
f.pb(a[i+x]);
s.pb(a[i+y]);
}
}
}
int k2=m%k;
for(int i=m-(m%k); i<m; i+=k) {
for(int x=0; x<k2; ++x) {
for(int y=x+1; y<k2; ++y) {
f.pb(a[i+x]);
s.pb(a[i+y]);
}
}
}
auto z = ask(f,s);
for(auto&x:z) cnt[x]++;
vector<int> b;
forn(i,n) if (cnt[i]==k-1) b.pb(i);
forn(i,n) cnt[i]=0;
for(int i=z.size()-k2*(k2-1)/2; i<z.size(); ++i) ++cnt[z[i]];
forn(i,n) if (cnt[i]==k2-1) b.pb(i);
forn(i,n) cnt[i]=0;
a=b;
}
for(int it=0; it<1; ++it) {
vector<int> f,s;
int k=a.size();
for(int i=0; i<a.size(); i+=k) {
for(int x=0; x<k; ++x) {
for(int y=x+1; y<k; ++y) {
f.pb(a[i+x]);
s.pb(a[i+y]);
}
}
}
auto z = ask(f,s);
for(auto&x:z) cnt[x]++;
vector<int> b;
forn(i,n) if (cnt[i]==k-1) b.pb(i);
a=b;
}
return a[0];
}
详细
Pretests
Pretest #1:
score: 15
Accepted
time: 594ms
memory: 23024kb
input:
1000 1 499500 957319859
output:
Correct 7127326332295218295 1.000000 1331569654267968081
result:
points 1.0 Correct
Pretest #2:
score: 0
Wrong Answer
time: 113ms
memory: 78244kb
input:
1000000 20 2000000 29091473
output:
Too many total elements in queries 1469670942222006797 0.000000 6906350380861515327
result:
points 0.0 Too many total elements in queries
Final Tests
Test #1:
score: 15
Accepted
time: 596ms
memory: 22140kb
input:
1000 1 499500 957319857
output:
Correct 7127326332295218295 1.000000 1331569654267968081
result:
points 1.0 Correct
Test #2:
score: 0
Wrong Answer
time: 109ms
memory: 78716kb
input:
1000000 20 2000000 29091471
output:
Too many total elements in queries 1469670942222006797 0.000000 6906350380861515327
result:
points 0.0 Too many total elements in queries