Codeforces Round #464 (Div. 2) C. Convenient For Everybody
C. Convenient For Everybody
time limit per test2 seconds
memory limit per test256 megabytes
Problem Description
In distant future on Earth day lasts for n hours and that’s why there are n timezones. Local times in adjacent timezones differ by one hour. For describing local time, hours numbers from 1 to n are used, i.e. there is no time “0 hours”, instead of it “n hours” is used. When local time in the 1-st timezone is 1 hour, local time in the i-th timezone is i hours.
Some online programming contests platform wants to conduct a contest that lasts for an hour in such a way that its beginning coincides with beginning of some hour (in all time zones). The platform knows, that there are ai people from i-th timezone who want to participate in the contest. Each person will participate if and only if the contest starts no earlier than s hours 00 minutes local time and ends not later than f hours 00 minutes local time. Values s and f are equal for all time zones. If the contest starts at f hours 00 minutes local time, the person won’t participate in it.
Help platform select such an hour, that the number of people who will participate in the contest is maximum.
Input
The first line contains a single integer n (2 ≤ n ≤ 100 000) — the number of hours in day.
The second line contains n space-separated integers a1, a2, …, an (1 ≤ ai ≤ 10 000), where ai is the number of people in the i-th timezone who want to participate in the contest.
The third line contains two space-separated integers s and f (1 ≤ s < f ≤ n).
Output
Output a single integer — the time of the beginning of the contest (in the first timezone local time), such that the number of participants will be maximum possible. If there are many answers, output the smallest among them.
Examples
input
3
1 2 3
1 3
output
3
input
5
1 2 3 4 1
1 3
output
4
Note
In the first example, it’s optimal to start competition at 3 hours (in first timezone). In this case, it will be 1 hour in the second timezone and 2 hours in the third timezone. Only one person from the first timezone won’t participate.
In second example only people from the third and the fourth timezones will participate.
解题心得:
- 有n个时区,每个时区有一定的人数,给你一个区间[l,r),要你选择一段连续的时区,长度为所给的区间长度,要求时区里面人数总和最多并且这个时区以l为当前的时间,输出第一个时区此时的时间。
- 题目很绕,看了老半天,其实还是很简单的,首先要明白时间是循环的,先枚举得出每一段区间(长度为所给的区间长度)的人数总和,然后选出最大的那一段区间,逆推第一个时区的时间。
#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5+100;
int num[maxn],n,l,r,len,sum[maxn],L,Max,ans;
void check(){
int cnt = 2;
Max = sum[1];
l = 1,r = len;
while(cnt <= n){
r++;
if(r > n)//时间是循环的
r -= n;
sum[cnt] = sum[cnt-1] - num[l] + num[r];//得到区间和
l++;
if(sum[cnt] > Max)
Max = sum[cnt];
cnt++;
}
}
void get_ans(){
ans = 1e18;
for(int i=1;i<=n;i++){
if(sum[i] == Max) {//找到最大的和并且第一个时区的时间最小
int temp = L-i+1;
if(temp <= 0)
temp += n;
if(temp < ans){
ans = temp;
}
}
}
}
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d",&num[i]);
scanf("%d%d",&l,&r);
L = l;
len = r-l;
for(int i=1;i<=len;i++)
sum[1] += num[i];
check();
get_ans();
printf("%d",ans);
return 0;
}
Codeforces Round #464 (Div. 2) C. Convenient For Everybody的更多相关文章
- Codeforces Round #464 (Div. 2) E. Maximize!
题目链接:http://codeforces.com/contest/939/problem/E E. Maximize! time limit per test3 seconds memory li ...
- Codeforces Round #464 (Div. 2)
A. Love Triangle time limit per test: 1 second memory limit per test: 256 megabytes input: standard ...
- Codeforces Round #464 (Div. 2) D. Love Rescue
D. Love Rescue time limit per test2 seconds memory limit per test256 megabytes Problem Description V ...
- Codeforces Round #464 (Div. 2) B. Hamster Farm
B. Hamster Farm time limit per test2 seconds memory limit per test256 megabytes Problem Description ...
- Codeforces Round #464 (Div. 2) A Determined Cleanup
A. Love Triangle time limit per test1 second memory limit per test256 megabytes Problem Description ...
- Codeforces Round #464 (Div. 2) B. Hamster Farm[盒子装仓鼠/余数]
B. Hamster Farm time limit per test 2 seconds memory limit per test 256 megabytes input standard inp ...
- Codeforces Round #464 (Div. 2) A. Love Triangle[判断是否存在三角恋]
A. Love Triangle time limit per test 1 second memory limit per test 256 megabytes input standard inp ...
- Codeforces Round #464 (Div. 2) D题【最小生成树】
Valya and Tolya are an ideal pair, but they quarrel sometimes. Recently, Valya took offense at her b ...
- Codeforces Round #366 (Div. 2) ABC
Codeforces Round #366 (Div. 2) A I hate that I love that I hate it水题 #I hate that I love that I hate ...
随机推荐
- pat1069. The Black Hole of Numbers (20)
1069. The Black Hole of Numbers (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, ...
- net core 的Generic Host 之Generic Host Builder
前言 通用Host(Generic Host) 与 web Host 不同的地方就是通用Host解耦了Http请求管道,使得通用Host拥有更广的应用场景.比如:消息收发.后台任务以及其他非http的 ...
- druid监控sql
我这里是以运维的角度查看sql, 前面的配置需要开发配合,参考:https://blog.csdn.net/u010391342/article/details/80606482 1.首先在注册中心( ...
- java 多线程之取消与关闭
要使线程安全,快速,可靠的停下来并不是一件容易的事情.java并没有提供任何机制来安全的终止线程.但是java提供了中断(interrupt)使一个线程可以终止另一个线程的当前工作 每个线程都有一个b ...
- 比例缩放 on() prop() 正则表达式
$('#banner-section').css('height',$(window).width() / 1900 * 490 ); $(window).resize(function(){ ...
- fstab 解析
某些时候当Linux系统下划分了新的分区后,需要将这些分区设置为开机自动挂载,否则,Linux是无法使用新建的分区的. /etc/fstab 文件负责配置Linux开机时自动挂载的分区. Window ...
- ubuntu常见错误
ubuntu常见错误--Could not get lock /var/lib/dpkg/lock解决 ubuntu常见错误--Could not get lock /var/lib/dpkg/loc ...
- java Vamei快速教程13 String类
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 之前的Java基础系列中讨论了Java最核心的概念,特别是面向对象的基础.在Jav ...
- C语言异常处理编程的三个境界
http://blog.csdn.net/treefish2012/article/details/17466487 这是上一次看完Herb Sutter的<Exceptional C++> ...
- NOIP2018初赛 解题报告
前言 \(NOIP2018\)初赛已经结束了,接下来就要准备复赛了. 不过,在此之前,还是先为初赛写一篇解题报告吧. 单项选择题 送分题.(虽然我还是做错了)可以考虑将它们全部转化为\(10\)进制, ...