| Task: | Milestone Counter |
| Sender: | wavelets |
| Submission time: | 2015-11-25 18:27:00 +0200 |
| Language: | C++ |
| Status: | READY |
| Result: | ACCEPTED |
| test | verdict | time | |
|---|---|---|---|
| #1 | ACCEPTED | 0.06 s | details |
| #2 | ACCEPTED | 0.06 s | details |
| #3 | ACCEPTED | 0.06 s | details |
| #4 | ACCEPTED | 0.05 s | details |
| #5 | ACCEPTED | 0.05 s | details |
| #6 | ACCEPTED | 0.05 s | details |
Code
#include <vector>
#include <valarray>
#include <deque>
#include <iostream>
#include <set>
#include <cstdint>
using namespace std;
int64_t gcd(int64_t a,int64_t b){return b==0?a:gcd(b,a%b);}
struct fraction:pair<int64_t,int64_t>{
fraction(int64_t a=0,int64_t b=1):pair<int64_t,int64_t>(a,b){int64_t c=gcd(a,b);first/=c;second/=c;}
};
int main(){
int64_t m,n;
cin>>m>>n;
vector<int64_t> M(m);
vector<int64_t> N(n);
for(int64_t i=0;i<m;i++)cin>>M[i];
for(int64_t i=0;i<n;i++)cin>>N[i];
int64_t v=M[0];
for(auto&it:M)it-=v;
deque<int64_t> qq(N.begin(),N.begin()+m);
set<fraction> a;
set<int64_t> b;
for(int64_t i=0;i<=n-m;++i){
fraction vv(qq[1]-qq[0],M[1]);
for(int64_t j=2;j<m;++j){
if(vv==fraction(qq[j]-qq[0],M[j]))continue;
goto asd;
}
a.insert(vv);
b.insert(qq[1]-qq[0]);
asd: qq.pop_front();
if(i+m<n)qq.push_back(N[i+m]);
}
cout<<a.size()<<'\n';
int64_t cnt=b.size();
for(auto&it:b)cout<<it<<" \n"[--cnt==0];
return 0;
}
Test details
Test 1
Verdict: ACCEPTED
| input |
|---|
| 17 47 100 101 102 104 110 116 128 16... |
| correct output |
|---|
| 11 1 6 36 216 1296 7776 46656 279... |
| user output |
|---|
| 11 1 6 36 216 1296 7776 46656 279... |
Test 2
Verdict: ACCEPTED
| input |
|---|
| 500 1000 100 102 104 106 108 110 112 11... |
| correct output |
|---|
| 1 2 |
| user output |
|---|
| 1 2 |
Test 3
Verdict: ACCEPTED
| input |
|---|
| 12 40 1 2 4 8 16 32 64 128 256 512 1... |
| correct output |
|---|
| 18 1 8192 16384 32768 65536 13107... |
| user output |
|---|
| 18 1 8192 16384 32768 65536 13107... |
Test 4
Verdict: ACCEPTED
| input |
|---|
| 2 1000 131345678912349 23234567891234... |
| correct output |
|---|
| 999 3 5 7 9 11 13 15 17 19 21 23 2... |
| user output |
|---|
| 999 3 5 7 9 11 13 15 17 19 21 23 2... |
Test 5
Verdict: ACCEPTED
| input |
|---|
| 22 102 100 101 102 104 106 110 114 12... |
| correct output |
|---|
| 0 |
| user output |
|---|
| 0 |
Test 6
Verdict: ACCEPTED
| input |
|---|
| 22 52 100 101 102 104 106 110 114 12... |
| correct output |
|---|
| 16 1 2 4 8 16 32 64 128 256 512 1... |
| user output |
|---|
| 16 1 2 4 8 16 32 64 128 256 512 1... |
