結果

問題 No.78 クジ付きアイスバー
ユーザー myanta
提出日時 2017-06-28 00:17:51
言語 C++11(廃止可能性あり)
(gcc 13.3.0)
結果
AC  
実行時間 2 ms / 5,000 ms
コード長 603 bytes
コンパイル時間 385 ms
コンパイル使用メモリ 36,608 KB
実行使用メモリ 6,820 KB
最終ジャッジ日時 2024-10-04 13:51:15
合計ジャッジ時間 1,360 ms
ジャッジサーバーID
(参考情報)
judge5 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 4
other AC * 35
権限があれば一括ダウンロードができます
コンパイルメッセージ
main.cpp: In function ‘int main()’:
main.cpp:22:30: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
   22 |                         scanf("%1d", &s[i]);
      |                         ~~~~~^~~~~~~~~~~~~~

ソースコード

diff #

#include<cstdio>
#include<vector>


using namespace std;

using vi=vector<int>;


int main(void)
{
	int n, k;

	while(scanf("%d%d", &n, &k)==2)
	{
		vi s(n);
		int one=0, two=0, lucky;
		int ans=0;

		for(int i=0;i<n;i++)
		{
			scanf("%1d", &s[i]);
			if(s[i]==1) one++;
			if(s[i]==2) two++;
		}

		lucky=one+two*2;
		if(k>=n*2)
		{
			int t=(k-n*2)/n;

			k-=t*n;
			if(lucky<n)
			{
				ans+=t*(n-lucky);
			}
		}

		lucky=0;
		for(int i=0;k>0;i++)
		{
			if(lucky<=0) ans++;
			else lucky--;

			k--;
			if(s[i%n]==1) lucky++;
			if(s[i%n]==2) lucky+=2;
		}
		printf("%d\n", ans);
	}

	return 0;
}
0