結果
| 問題 |
No.78 クジ付きアイスバー
|
| コンテスト | |
| ユーザー |
IL_msta
|
| 提出日時 | 2017-01-27 08:00:21 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 2,002 bytes |
| コンパイル時間 | 2,960 ms |
| コンパイル使用メモリ | 101,340 KB |
| 実行使用メモリ | 5,248 KB |
| 最終ジャッジ日時 | 2024-12-23 15:23:39 |
| 合計ジャッジ時間 | 2,991 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 34 WA * 1 |
コンパイルメッセージ
main.cpp: In function ‘void solve()’:
main.cpp:68:14: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
68 | scanf("%d%d %s",&N,&K,bar);
| ~~~~~^~~~~~~~~~~~~~~~~~~~~
ソースコード
#ifdef __GNUC__
#pragma GCC optimize ("O3")
#pragma GCC target ("avx")
#endif
#define _USE_MATH_DEFINES
#include <iostream>
#include <iomanip>
#include <stdio.h>
#include <sstream>
#include <algorithm>
#include <cmath>
#include <string>
#include <cstring>
#include <vector>
#include <valarray>
#include <array>
#include <queue>
#include <complex>
#include <set>
#include <map>
#include <stack>
#include <list>
#include<cassert>//assert();
#include <fstream>
/////////
#define REP(i, x, n) for(int i = x; i < n; i++)
#define rep(i,n) REP(i,0,n)
/////////
typedef long long LL;
typedef long double LD;
typedef unsigned long long ULL;
#define PII pair<int,int>
/////////
using namespace::std;
// 最大公約数
template<class T>
inline T gcd(T a, T b){return b == 0 ? a : gcd(b, a % b);}
// 最小公倍数
template<class T>
inline T lcm(T a, T b){return a * b / gcd(a, b);}
////////////////////////////////
int sm(int N,int K,char* bar,int buy,int hit,int eat){
for(;;){
for(int i=0; i<N; ++i){
if( hit == 0 ){++buy;}
else{--hit;}
hit += bar[i] - '0';
++eat;
if( eat >= K ){
return buy;
}
}
}
return -1;
}
inline void solve(){
//scanf,printf
char bar[51];
int N,K;
scanf("%d%d %s",&N,&K,bar);
//printf("%d\n%d\n%s",N,K,bar);
int buy=0;
int hit=0;
for(int i=0;i<N;++i){
if( hit == 0 ){++buy;}
else{--hit;}
hit += (bar[i] - '0');
}
/*
buy < hit
buy == hit
hit < buy
*/
int BuyAll,atari,Eat;
int hako = K/N - 1;
int ret;
if( hit <= buy ){
BuyAll = buy + (hako-1) * (buy-hit);
atari = hit;
Eat = hako * N;
ret = sm(N,K,bar,BuyAll,atari,Eat);
printf("%d\n",ret);
}else{//buy < hit
if( K <= buy ){
ret = sm(N,K,bar,0,0,0);
printf("%d\n",ret);
}else{
ret = buy;
printf("%d\n",ret);
}
}
}
int main(void){
//std::cin.tie(0);
//std::ios::sync_with_stdio(false);
//std::cout << std::fixed;//小数を10進数表示
//cout << setprecision(16);//小数をいっぱい表示する。16?
solve();
return 0;
}
IL_msta