#UPCF Round1 D - Vika and Squares
来源:互联网 发布:熊猫tv直播助手mac版 编辑:程序博客网 时间:2024/06/07 04:44
CodeForces 610B
*Description
Vika has n jars with paints of distinct colors. All the jars are numbered from 1 to n and the i-th jar contains ai liters of paint of color i.
Vika also has an infinitely long rectangular piece of paper of width 1, consisting of squares of size 1 × 1. Squares are numbered 1, 2, 3 and so on. Vika decided that she will start painting squares one by one from left to right, starting from the square number 1 and some arbitrary color. If the square was painted in color x, then the next square will be painted in color x + 1. In case of x = n, next square is painted in color 1. If there is no more paint of the color Vika wants to use now, then she stops.
Square is always painted in only one color, and it takes exactly 1 liter of paint. Your task is to calculate the maximum number of squares that might be painted, if Vika chooses right color to paint the first square.
Input
The first line of the input contains a single integer n (1 ≤ n ≤ 200 000) — the number of jars with colors Vika has.
The second line of the input contains a sequence of integers a1, a2, …, an (1 ≤ ai ≤ 109), where ai is equal to the number of liters of paint in the i-th jar, i.e. the number of liters of color i that Vika has.
Output
The only line of the output should contain a single integer — the maximum number of squares that Vika can paint if she follows the rules described above.
Sample Input
Input
5
2 4 2 3 3
Output
12
Hint
In the first sample the best strategy is to start painting using color 4. Then the squares will be painted in the following colors (from left to right): 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5.
In the second sample Vika can start to paint using any color.
In the third sample Vika should start painting using color number 5.*
思路:本质找出最小值,并求出最大的连续非0项,注意在线算法的运用更快
#include <iostream>#include <cstring>#include <string>#include <cmath>#include <algorithm>#include <cstdio>#include <vector>using namespace std;int main(){ int i,j,m,n; scanf("%d",&m); long long int a[m];scanf("%lld",&a[0]);long long int min=a[0]; for(i=1;i<m;i++){scanf("%lld",&a[i]);min=min<a[i]?min:a[i];} long long int sum =min*m; for(i=0;i<m;i++)a[i]-=min; long long int max=0,cnt=0; for(i=0;i<m;i++){ if(a[i]==0)cnt=0;else cnt++; max=max>cnt?max:cnt; } cnt=0; for(i=m-1;a[i]!=0;i--)cnt++; for(i=0;a[i]!=0;i++)cnt++; max=max>cnt?max:cnt; printf("%lld\n",max+sum); //system("pause"); return 0;}
- #UPCF Round1 D - Vika and Squares
- Vika and Squares
- Vika and Squares(颜料)
- Vika and Squares
- 610B Vika and Squares
- Vika and Squares 刷油漆
- B. Vika and Squares 610B(贪心)
- 【CodeForces 610B】Vika and Squares
- CodeForces - 610B Vika and Squares (模拟)
- 【CodeForces】[610B]Vika and Squares
- CodeForces 610B - Vika and Squares
- CF 610B Vika and Squares
- CodeForces-610B-Vika and Squares
- Codeforce - 610 - B. Vika and Squares
- Vika and Squares 【思维+技巧+debug???】
- Codeforces 610B Vika and Squares 【计数 数学基础】
- Codeforces - 337B(div2) - Vika and Squares(练习)
- CodeForces 610 B. Vika and Squares(水~)
- Android 网络通信框架Volley简介(Google IO 2013)
- Android Studio下使用ShareSDK使用方法详解
- linux 多台虚拟机环境搭建
- apache添加php模块
- Android Volley入门到精通:初识Volley的基本用法(示例,出错代码)
- #UPCF Round1 D - Vika and Squares
- Oracle启用远程访问&开启共享模式
- iOS开发高手进阶之路
- iOS网络协议----HTTP/TCP/IP浅析
- Notification学习(1)
- 树形结构的处理——组合模式(一):设计杀毒软件的框架结构
- Hibernate使用自定义脚本替换注解或者xml文件中的自动生成表结构
- dede安装出现dir 织梦cms重新安装出现dir怎么办
- Sicily 1920. Divide The Stones