QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#515555 | #3805. Promotions | Bacily# | WA | 0ms | 3608kb | C++20 | 1.9kb | 2024-08-11 18:40:09 | 2024-08-11 18:40:09 |
Judging History
answer
#include <bits/stdc++.h>
#define lll __int128
#define el '\n'
#define sz(x) x.size()
using namespace std;
using ll = long long;
using ull = unsigned long long;
vector<vector<int>>adj;
vector<int>lvl;
int mx;
void bfs(queue<int>&q){
while(!q.empty()){
int node=q.front();
q.pop();
for(auto child : adj[node]){
if(lvl[child]==-1){
lvl[child]=lvl[node]+1;
mx=max(mx,lvl[child]);
q.push(child);
}
}
}
}
void tc() {
int l,r,n,m;cin>>l>>r>>n>>m;
adj=vector<vector<int>>(n);
vector<int>num(n);
lvl=vector<int>(n,-1);
for(int i=0;i<m;i++){
int u,v;cin>>u>>v;
adj[u].push_back(v);
num[v]++;
}
queue<int>q;
for(int i=0;i<n;i++){
if(!num[i])lvl[i]=0,q.push(i);
}
bfs(q);
vector<int>freq(mx+1);
for(int i=0;i<n;i++)freq[lvl[i]]++;
int sum=0,ans=0,ans_a=n,ans_b=n;
for(int i=0;i<=mx;i++){
if(sum+freq[i]<=l)sum+=freq[i];
else{
l-=sum;
l-=((freq[i]+1)/2);
if(l>0){
ans_a=sum+l;
if(freq[i]%2==1)ans_a--;
}
else ans_a=sum;
break;
}
}
sum=0;
for(int i=0;i<=mx;i++){
if(sum+freq[i]<=r)sum+=freq[i];
else{
r-=sum;
if(r-((freq[i]+1)/2)>0){
r-=((freq[i]+1)/2);
ans_b=sum+r;
ans=n-sum-freq[i];
if(freq[i]%2==1)ans_b--;
}
else ans=n-sum-2*r,ans_b=sum;
break;
}
}
cout<<ans_a<<' '<<ans_b<<' '<<ans<<el;
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
//int t;cin >> t;
//while (t--)
tc();
}
詳細信息
Test #1:
score: 0
Wrong Answer
time: 0ms
memory: 3608kb
input:
3 4 7 8 0 4 1 2 1 5 5 2 6 4 0 1 2 3 4 5
output:
2 4 3
result:
wrong answer 1st lines differ - expected: '2', found: '2 4 3'