JOI2007本選 問題2@C++
本選に向けて練習ちう。
最近Rubyばっか触っていたのでC++はお久しぶり状態。少し馴らさないとやばい。
#include <cstdio> #include <vector> #include <algorithm> using namespace std; int main(int argc, char *argv[], char *envp[]) { #ifdef DEBUG FILE *in = stdin; FILE *out = stdout; #else FILE *in = fopen("input.txt", "r"); FILE *out = fopen("output.txt", "w"); #endif int n; int k; fscanf(in, "%d %d\n", &n, &k); vector<int> cards(k); for(int i=0;i<k;i++) { fscanf(in, "%d\n", &cards[i]); } sort(cards.begin(), cards.end()); if(cards[0] == 0) { int count = 0; int count2 = 0; int max_count = 0; int prev = -1; for(int i=1;i<k;i++) { int curr = cards[i]; if(curr - prev == 2) { count = count2; count2 = 0; count++; } else if(curr - prev != 1) { count = 0; count2 = 0; } count++; count2++; max_count = max(max_count, count); prev = curr; } fprintf(out, "%d\n", max_count); } else { int count = 0; int max_count = 0; int prev = -1; for(int i=0;i<k;i++) { int curr = cards[i]; if(curr - prev != 1) { count = 0; } count++; max_count = max(max_count, count); prev = curr; } fprintf(out, "%d\n", max_count); } fclose(in); fclose(out); return 0; }