【CodeForces】[610B]Vika and Squares

来源:互联网 发布:c语言中逗号运算符 编辑:程序博客网 时间:2024/05/29 14:43

这里写图片描述

思路是首先有至少
最小的那一种*n次(注意数据范围)
然后剩下的以最小的那个为分割
可以分成几部分
取其中最大的那一部分的个数加入结果
(最前面的和最后面的可以视为同一组)

#include<stdio.h>int a[200200];int main() {    int n;    while(scanf("%d",&n)!=EOF) {        scanf("%d",&a[0]);        int min=a[0];        for(int i=1; i<n; i++) {            scanf("%d",&a[i]);            if(min>a[i])                min=a[i];        }        __int64 res=(__int64)min*(__int64)n;        int t=0;        int tres=0;        int maxtres=0;        int firt=0;        bool flag=false;        for(int i=0; i<n; i++) {            a[i]-=min;            if(a[i]!=0) {                if(flag) {                    tres++;                } else {                    firt++;                }            } else {                flag=true;                if(maxtres<tres)                    maxtres=tres;                tres=0;            }        }        tres+=firt;        if(maxtres<tres)            maxtres=tres;        printf("%I64d\n",res+(__int64)maxtres);    }    return 0;}

题目地址:【CodeForces】[610B]Vika and Squares

0 0