QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#515555#3805. PromotionsBacily#WA 0ms3608kbC++201.9kb2024-08-11 18:40:092024-08-11 18:40:09

Judging History

你现在查看的是最新测评结果

  • [2024-08-11 18:40:09]
  • 评测
  • 测评结果:WA
  • 用时:0ms
  • 内存:3608kb
  • [2024-08-11 18:40:09]
  • 提交

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'