CodeChef submission 63171 (C++ 4.0.0-8) plaintext list. Status: WA, problem F5, contest AUG09. By gmark (Mark Greve), 2009-08-03 05:51:37.
// Magic Sequence // Source: CodeChef August 2009 Algorithm Challenge // CodeChef ID: F5 // Date: 03-08-2009 // Author: Mark Greve #include <algorithm> #include <bitset> #include <cassert> #include <cctype> #include <cmath> #include <cstdio> #include <cstdlib> #include <cstring> #include <ctime> #include <deque> #include <functional> #include <iomanip> #include <iostream> #include <list> #include <map> #include <numeric> #include <queue> #include <set> #include <sstream> #include <stack> #include <string> #include <utility> #include <vector> using namespace std; typedef long long LL; const LL MOD=1000000; vector<LL> a, b, d; LL p,q; LL calcA(const vector<LL>& prev) { LL res = 0; for (int i=0;i<p;++i) res = (res + prev[prev.size()-1-i]*a[i])%MOD; return res; } LL next(const vector<LL>& prev) { LL ret = calcA(prev); //printf("RET: %lld\n", ret); if (q==0) return ret; vector<LL> pprev = prev; pprev.pop_back(); LL oo = calcA(pprev); ret = (ret - d[0]*(oo - prev.back()))%MOD; for (int i=1;i<q;++i) { //cout << "RET BEF " << ret << endl; ret = (ret - (d[i]-d[i-1])*(oo - prev.back()))%MOD; //cout << "RET NOW " << ret << endl; } if (ret<0) ret += MOD; return ret; } int main() { a = vector<LL>(p); b = vector<LL>(q); d = vector<LL>(q); vector<LL> newb, newd; for (int i=0;i<q;++i) { if (b[i]==0 || d[i]==0) continue; newb.push_back(b[i]); newd.push_back(d[i]); } b = newb, d = newd, q = newb.size(); vector<LL> prev(10); for (int i=0;i<10;++i) { //printf("%lld\n", prev[i]); } for (int i=0;i<10;++i) { LL t = next(prev); prev.erase(prev.begin()); prev.push_back(t); } } }
Comments

