Coder-Strike 2014 - Finals (online edition, Div. 2)——Bug in Code

时间:2014-04-29 13:34:22   收藏:0   阅读:293

题目链接

const int MAXN = 310000;

struct Node
{
    int n, num;
    int operator< (const Node& a) const
    {
        return num < a.num;
    }
} ipt[MAXN];
int cnt[MAXN];

int cmp(Node& a, int b)
{
    return a.num < b;
}

int main()
{
//    freopen("in.txt", "r", stdin);
    int n, k, a, b;
    while (~RII(n, k))
    {
        CLR(cnt, 0);
        map<pair<int, int>, int> mp;
        FE(i, 1, n) ipt[i].n = i;
        FE(i, 1, n) ipt[i].num = 0;

        REP(i, n)
        {
            RI(a); ipt[a].num++; cnt[a]++;
            RI(b); ipt[b].num++; cnt[b]++;
            if (a > b) swap(a, b);
            mp[MP(a, b)]++;
        }
        sort(ipt + 1, ipt + n + 1);
        LL ans = 0;
        FE(i, 1, n)
        {
            int ind = lower_bound(ipt + i + 1, ipt + n + 1, k - ipt[i].num, cmp) - ipt;
            ans += n - ind + 1;
        }
        FC(it, mp)
        {
            a = (it->first).first; b = (it->first).second;
            if (cnt[a] + cnt[b] >= k && cnt[a] + cnt[b] - it->second < k)
                ans--;
        }
        cout << ans << endl;
    }
    return 0;
}


评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!