# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
475590 |
2021-09-23T05:58:13 Z |
stefantaga |
Matching (CEOI11_mat) |
C++14 |
|
1485 ms |
62324 KB |
#include <bits/stdc++.h>
#define DIM 1000010
#define MOD1 1000000007
#define MOD2 1000000009
#define B 10000
using namespace std;
struct segment_tree{
int hash1,hash2;
int cnt;
} aint[DIM*4];
pair <int,int> v[DIM];
int nrm[DIM];
int p1[DIM],p2[DIM];
vector <int> sol;
int n,m,i,j,x;
void update (int nod, int st, int dr, int poz, int val){
if (st == dr){
aint[nod].hash1 = aint[nod].hash2 = val;
if (val)
aint[nod].cnt = 1;
else aint[nod].cnt = 0;
return;
}
int mid = (st+dr)>>1;
if (poz <= mid)
update (nod<<1,st,mid,poz,val);
else update ((nod<<1)|1,mid+1,dr,poz,val);
int fiu_st = nod<<1, fiu_dr = (nod<<1)|1;
aint[nod].hash1 = (1LL * aint[fiu_st].hash1 * p1[ aint[fiu_dr].cnt ] % MOD1 + aint[fiu_dr].hash1) % MOD1;
aint[nod].hash2 = (1LL * aint[fiu_st].hash2 * p2[ aint[fiu_dr].cnt ] % MOD2 + aint[fiu_dr].hash2) % MOD2;
aint[nod].cnt = aint[fiu_st].cnt + aint[fiu_dr].cnt;
}
int main (){
//ifstream cin ("date.in");
//ofstream cout ("date.out");
cin>>m>>n;
int hash1 = 0, hash2 = 0;
for (i=1;i<=m;i++){
cin>>x;
hash1 = (1LL * hash1 * B % MOD1 + x) % MOD1;
hash2 = (1LL * hash2 * B % MOD2 + x) % MOD2;
}
p1[0] = p2[0] = 1;
for (i=1;i<=n;i++){
p1[i] = 1LL * p1[i-1] * B % MOD1;
p2[i] = 1LL * p2[i-1] * B % MOD2;
}
for (i=1;i<=n;i++){
cin>>v[i].first;
v[i].second = i;
}
sort (v+1,v+n+1);
for (i=1;i<=n;i++)
nrm[v[i].second] = i;
for (i=1;i<m;i++)
update (1,1,n,nrm[i],i);
int sum1 = 0, sum2 = 0;
for (i=0;i<m;i++){
sum1 = (sum1 + p1[i]) % MOD1;
sum2 = (sum2 + p2[i]) % MOD2;
}
for (i=m;i<=n;i++){
/// adaug elem asta
update (1,1,n,nrm[i],i);
int val1 = (aint[1].hash1 - 1LL * sum1 * (i-m) % MOD1 + MOD1) % MOD1;
int val2 = (aint[1].hash2 - 1LL * sum2 * (i-m) % MOD2 + MOD2) % MOD2;
if (val1 == hash1 && val2 == hash2)
sol.push_back(i-m+1);
/// sterg i-m+1
update (1,1,n,nrm[i-m+1],0);
}
cout<<sol.size()<<"\n";
for (auto it : sol)
cout<<it<<" ";
return 0;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
332 KB |
Output is correct |
2 |
Correct |
1 ms |
332 KB |
Output is correct |
3 |
Correct |
0 ms |
332 KB |
Output is correct |
4 |
Correct |
0 ms |
332 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
332 KB |
Output is correct |
2 |
Correct |
1 ms |
332 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
22 ms |
1484 KB |
Output is correct |
2 |
Correct |
16 ms |
1368 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
19 ms |
1484 KB |
Output is correct |
2 |
Correct |
18 ms |
1412 KB |
Output is correct |
3 |
Correct |
4 ms |
460 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
177 ms |
9928 KB |
Output is correct |
2 |
Correct |
193 ms |
10208 KB |
Output is correct |
3 |
Correct |
278 ms |
10380 KB |
Output is correct |
4 |
Correct |
262 ms |
10484 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
213 ms |
10784 KB |
Output is correct |
2 |
Correct |
262 ms |
10288 KB |
Output is correct |
3 |
Correct |
209 ms |
10708 KB |
Output is correct |
4 |
Correct |
214 ms |
12512 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
222 ms |
10760 KB |
Output is correct |
2 |
Correct |
241 ms |
10272 KB |
Output is correct |
3 |
Correct |
214 ms |
10352 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1228 ms |
55168 KB |
Output is correct |
2 |
Correct |
1485 ms |
60956 KB |
Output is correct |
3 |
Correct |
1095 ms |
47820 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1273 ms |
53668 KB |
Output is correct |
2 |
Correct |
1424 ms |
51212 KB |
Output is correct |
3 |
Correct |
1354 ms |
57684 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1186 ms |
53388 KB |
Output is correct |
2 |
Correct |
1109 ms |
62324 KB |
Output is correct |
3 |
Correct |
1339 ms |
53824 KB |
Output is correct |
4 |
Correct |
1070 ms |
58908 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1154 ms |
53856 KB |
Output is correct |
2 |
Correct |
1275 ms |
54844 KB |
Output is correct |
3 |
Correct |
510 ms |
26588 KB |
Output is correct |
4 |
Correct |
1154 ms |
59460 KB |
Output is correct |