結果
問題 | No.78 クジ付きアイスバー |
ユーザー |
![]() |
提出日時 | 2021-02-22 12:06:54 |
言語 | C (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 3,263 ms / 5,000 ms |
コード長 | 1,365 bytes |
コンパイル時間 | 1,289 ms |
コンパイル使用メモリ | 30,976 KB |
実行使用メモリ | 6,944 KB |
最終ジャッジ日時 | 2024-09-21 10:49:40 |
合計ジャッジ時間 | 46,867 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 35 |
ソースコード
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> // Yukicoder №78 クジ付きアイスバー ★★☆ // https://yukicoder.me/problems/no/78 // *********************** #define PRINCR do{printf("\n");fflush(stdout);}while(0) #define GETLINE(str) do{char *p;fgets(str,sizeof(str),stdin);p=strchr(str,'\n');if(p)*p='\0';}while(0) #define REP(a,b) for(int a=0;a<(int)(b);++a) static char *GETWORD(char* str) {char c;char *cp;cp=&str[0];c=fgetc(stdin);while( c != EOF ){if((c==' ')||( c=='\n')) break;*cp++=c;c=fgetc(stdin);}*cp='\0';return &str[0];} #define GETINTS(a,b) {char s[34];int *ap=a;REP(i,b){GETWORD(s);sscanf(s,"%d", ap);ap++;}} static int GETLINEINT(void) {char s[34];GETLINE(s);return atoi(s);} static int GETWORDINT(void) {char s[34];GETWORD(s);return atoi(s);} static long GETWORDLONG(void) {char s[34];GETWORD(s);return atol(s);} #define SWAP(type,a,b) do{type _c;_c=a;a=b;b=_c;}while(0) #define PI ((double)3.141592653589793238462643383279) int main() { char str[258]; int box; long want; long buyed = 0; long atari = 0; long eat = 0; int idx; box = GETWORDINT(); want = GETWORDLONG(); GETLINE(str); idx = -1; while( eat < want ) { if( atari ) { atari--; } else { buyed++; } idx++; if( idx >= box ) idx = 0; atari += str[idx] - '0'; eat++; } printf("%ld\n", buyed ); return 0; }