CodeForces 760BFrodo and pillows

来源:互联网 发布:网卡mac地址怎么恢复 编辑:程序博客网 时间:2024/04/28 03:28

http://codeforces.com/problemset/problem/760/B




题意就是分枕头,每人至少一个,相邻之间差距不能大于1个,问第k个人最多能分多少枕头。
这道题只要从第k个人开始向上类似于金字塔一样的累加即可,要注意k很可能在边缘,这就要注意在加的过程中要少加几个。



#include<bits/stdc++.h>using namespace std;long long int a[555][555];long long int b[555];long long int c[555];int main(){int n,m,k;while(scanf("%d%d%d",&n,&m,&k)!=EOF){     int zjs=0;     int yjs=0;     int i=0;     int z=k-1;     int y=n-k;     int ans=1;     int cs=1;     m=m-n;     while(m>=cs*2-1-zjs-yjs)     {     ans++;     m-=cs*2-1-zjs-yjs;     cs++;     if(cs>=z+2)zjs++;     if(cs>=y+2)yjs++;     if(cs*2-1-zjs-yjs==n)     {     ans+=m/n;     break; } } cout<<ans<<endl;}return 0;}


原创粉丝点击