ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Codeforces Round #679 (Div. 2, based on Technocup 2021 Elimination Round 1)

2020-10-27 02:00:26  阅读:219  来源: 互联网

标签:based 679 int note maxn diff include Round const


C. Perform Easily || 尺取法(滑动窗口)

注意六倍问题

 

#include <cstdio>
#include <algorithm>
using namespace std;
const int maxn = 1e5 +9;
const int INF = 1e9 + 7;

int a[7], b[maxn], id[maxn];

struct note
{
    int diff, pos;
}p[maxn*6];

bool cmp(note x, note y)
{
    return x.diff < y.diff;
}

int main()
{
    int n;
    for(int i = 1; i <= 6; ++i)
        scanf("%d", &a[i]);
    scanf("%d", &n);
    int tmp = 1;
    for(int i = 1; i <= n; ++i)
    {
        scanf("%d", &b[i]);
        for(int j = 1; j <= 6; ++j)
        {
            p[tmp].diff = b[i] - a[j];
            p[tmp].pos = i;
            ++tmp;
        }
    }
    sort(p + 1, p + 1 + n * 6, cmp);
    if(n == 1)
    {
        printf("0\n");
        return 0;
    }
    //for(int i = 1; i <= n * 6; ++i) printf("%d %d\n", p[i].diff, p[i].pos);

    int ans = INF, cnt = 0, l = 1;
    for(int r = 1; r <= n * 6; ++r)
    {
        if(!id[p[r].pos]) ++cnt;
        ++id[p[r].pos];
        while(cnt == n)
        {
            ans = min(ans, p[r].diff - p[l].diff);
            id[p[l].pos]--;
            if(!id[p[l].pos]) --cnt;
            ++l;
        }
    }
    printf("%d\n", ans);
    return 0;
}

 

标签:based,679,int,note,maxn,diff,include,Round,const
来源: https://www.cnblogs.com/Maxx-el/p/13882364.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有