codeforces gym 100645A
将以前写过的一些程序搬运一下。
codeforces挂了,只能看到我的代码,不要怪我。
AC代码
//
// main.cpp
// A.a.c
//
// Created by zhangdenny on 16/5/22.
// Copyright (c) 2016年 Kirito. All rights reserved.
//
#include <functional>
#include <algorithm>
#include <exception>
#include <stdexcept>
#include <streambuf>
#include <iterator>
#include <string.h>
#include <stdlib.h>
#include <typeinfo>
#include <valarray>
#include <iostream>
#include <sstream>
#include <istream>
#include <stdio.h>
#include <climits>
#include <clocale>
#include <complex>
#include <csetjmp>
#include <csignal>
#include <cstdarg>
#include <cstddef>
#include <ctype.h>
#include <cassert>
#include <cstdlib>
#include <utility>
#include <cstring>
#include <numeric>
#include <ostream>
#include <cwctype>
#include <fstream>
#include <iomanip>
#include <math.h>
#include <bitset>
#include <cctype>
#include <string>
#include <vector>
#include <limits>
#include <locale>
#include <memory>
#include <cerrno>
#include <iosfwd>
#include <cfloat>
#include <cstdio>
#include <cwchar>
#include <cmath>
#include <ctime>
#include <deque>
#include <queue>
#include <stack>
#include <list>
#include <ios>
#include <map>
#include <set>
#include <new>
#define fi first
#define se second
#define np next_permutation
#define ll long long
using namespace std;
bool used[5];
set<int> ans;
void dfs(int lft,int a[])
{
if(lft==1)
{
for(int i=0;i<4;i++)
{
if(!used[i])
ans.insert(a[i]);
}
}
else
{
for(int i=0;i<4;i++)
if(!used[i])
{
for(int j=0;j<4;j++)
if(!used[j] && i!=j)
{
int old=a[i];
used[j]=true;
a[i]=old+a[j];
dfs(lft-1,a);
a[i]=old-a[j];
dfs(lft-1,a);
a[i]=old*a[j];
dfs(lft-1,a);
if(a[j]!=0 && old%a[j]==0)
a[i]=old/a[j];
dfs(lft-1,a);
a[i]=old;
used[j]=false;
}
}
}
}
int main()
{
int testc=0;
while(true)
{
testc++;
int a,b,c,d;
cin>>a>>b>>c>>d;
if(a==0 && b==0 && c==0 && d==0)
return 0;
ans.clear();
int e[5];
e[0]=a;
e[1]=b;
e[2]=c;
e[3]=d;
dfs(4,e);
int sum=0,mx=-1e9,ans1=0,ans2=0;
for(set<int>::iterator it=ans.begin();it!=ans.end();it++)
{
if(mx+1!=*it)
{
if(sum>=ans2)
{
ans2=sum;
ans1=mx-sum+1;
}
sum=1;
mx=*it;
}
else
{
mx++;
sum++;
}
}
if(sum>=ans2)
{
ans2=sum;
ans1=mx-sum+1;
}
int ans3=ans1+ans2-1;
cout<<"Case "<<testc<<": "<<ans1<<" to "<<ans3<<endl;
}
return 0;
}