标签: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. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。